Stm32f103c8t6从停止模式通过中断唤醒后,怎么让他继续执行程序?进入停止模式之前oled显示,进入停止模式后下载不了程序,oled也不亮,然后用中断唤醒,但oled怎么都不亮,但是能下载程序,说明stm32应该已经被唤醒
1条回答 默认 最新
关注 - 你可以看下这个问题的回答https://ask.csdn.net/questions/7451160
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:用stm32f103c8t6点亮0.96寸oled屏(附带百度云例程)
- 除此之外, 这篇博客: stm32项目_stm32f103c8t6项目_循迹避障小车完整制作过程_智能小车设计_STM32智能小车教程-循迹-避障-蓝牙遥控-跟随中的 OLED模块 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
使用:OLED显示屏模块 0.96寸 IIC/SPI
选择原因:价格较低、使用方便
注意:
这里使用 四管脚 顺序为 GND VCC SCL SDA,绘制PCB要注意顺序
供电为3.3V
- 以下回答由chatgpt基于相关博客总结生成:
对于Stm32f103c8t6停止模式的问题,可能是由于停止模式下主频被关闭,需要在唤醒后重新配置时钟。具体解决方案如下:
- 在进入停止模式之前,记录当前系统时钟,以在唤醒后重新配置时钟。可以使用如下代码:
RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); uint32_t HCLK_Frequency = RCC_Clocks.HCLK_Frequency;
- 进入停止模式之前,关闭所有用于唤醒的外部中断,避免唤醒时意外触发外部中断。可以使用如下代码:
NVIC_DisableIRQ(EXTI0_IRQn); // 关闭外部中断0 NVIC_DisableIRQ(EXTI1_IRQn); // 关闭外部中断1 // ...
- 配置唤醒源,以便能够在需要时唤醒系统。可以使用如下代码:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); PWR_WakeUpPinCmd(ENABLE); PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
- 唤醒后,重新配置时钟。可以使用如下代码:
RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); while (RCC_WaitForHSEStartUp() != SUCCESS); RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); RCC_PLLCmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while (RCC_GetSYSCLKSource() != 0x08);
- 重新开启外部中断,使得系统能够响应外部中断。可以使用如下代码:
NVIC_EnableIRQ(EXTI0_IRQn); // 开启外部中断0 NVIC_EnableIRQ(EXTI1_IRQn); // 开启外部中断1 // ...
- 然后再次配置 OLED,并恢复显示内容。具体操作可以参考原代码中的初始化和显示函数。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
- ¥20 网站后台使用极速模式非常的卡
- ¥20 Keil uVision5创建project没反应
- ¥15 mmseqs内存报错
- ¥15 vika文档如何与obsidian同步
- ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
- ¥15 陆空双模式无人机飞控设置
- ¥15 sentaurus lithography
- ¥100 求抖音ck号 或者提ck教程
- ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)