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 逐月累计,月份不连续,补齐月份
- ¥15 应用简单的Python代码完成一个学生成绩管理系统
- ¥15 用matlab求微分方程初值问题
- ¥15 vscode下编写第三方库opencv与pcl代码时没有代码提示
- ¥15 能够跑通不报错,如何解决?(标签-matlab)
- ¥15 MOS在RDS较大,频率高时开关波形异常
- ¥15 SCENIC分析报错求解答
- ¥15 ceph初始化mon不成功 下图不报错 这个是什么元
- ¥15 数学建模数学建模少ai
- ¥35 这个等效电路图是什么意思?(答疑)(有没有不是chat的,我就是在chat搜不到才来问的,chat还开了VIP)(可以追加酬金)