STM32停止模式唤醒不恢复时钟的后果
扫描二维码
随时随地手机看文章
关于STM32的低功耗详细解析请在STM32低功耗模式解读中查看,在里面讲到当STM32在停止模式时,芯片1.8V区域时钟别关闭,HSI,HSE时钟也被关闭,当某个使能的中断或事件发生后,STM32从停止模式退出,此时STM32默认的时钟为HSI,因此若要让STM32回到运行模式并正常工作一段时间,必须要注意STM32的时钟问题,按照实际情况选择是否将系统时钟恢复到停止模式前的时钟配置。
测试采用芯片为stm32fo30,HSI时钟频率为8M,系统频率为48M。PLL倍频为12,输入为HSI/2。
测试一LED点亮时间的影响
采用systick定时器定时,按键按下后LED点亮,定时器开始5s定时。定时到后LED熄灭。
正常模式下,LED灯点亮5S。
从停止模式唤醒后不恢复系统时钟,计时30sLED灯才熄灭。
分析:系统频率是HSI频率的6倍,因此LED灯点亮时间也满足6倍关系。
从停止模式唤醒后不恢复系统时钟,计时30sLED灯才熄灭。
从停止模式唤醒后恢复系统时钟,计时5LED灯熄灭。
测试二,串口
正常模式下串口正常收发。
从停止模式唤醒后不恢复系统时钟,串口收到一堆乱码,正常数据不能被接收。原因:
串口时钟设为系统时钟,导致波特率不匹配。
从停止模式唤醒后恢复系统时钟,串口接收发送正常。
总结:STM32从停止模式唤醒后要特别注意时钟恢复配置问题,以防出现各种小问题。