STM32F030低功耗之停机模式的进入和唤醒
本人使用的是STM32F030F4P6进行从机低功耗的设计。设计需求是和主机进行状态同步,主机超时不从串口给回馈(主机关机了)从机进入停机模式等待串口来数据进行唤醒(主机开机了)。
1.停机模式介绍
STM32F030F4P6有三个低功耗模式。待机模式下(standby)功耗最低但是需要wake_up引脚上升沿或者RTC闹钟才能进行唤醒,在硬件已经设计好的基础上不满足本次软件设计的需求。然后考虑功耗第二低的停机模式(stop),刚好停机模式能够被任一外部中断包括串口中断进行唤醒。
2.停机模式的进入
停机模式的进入由数据手册可知,需要将SLEEPDEEP寄存器置1,PDDS寄存器置0,还要设置PWR->CR位。这些操作在库函数的PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI);里面已经封装好了,直接调用即可。调用该函数时需要选择是WFI模式还是WFE模式,关于这两个模式的区别在数据手册中有介绍,个人理解的是WFI模式进入之后如果需要串口唤醒则需要将串口接收引脚配置为外部中断(之前是串口中断)。
封装的进入停机模式的函数&
flashal,: 调试出来了,我原先用的中断模式将端口印出来,结果无法进入中断,直接将VDD接到端口就行了,我是用的是stm32f103c8t6的TIM3,CH1输入捕获模式,端口配置为下拉模式,上升沿触发,代码参考https://blog.csdn.net/as480133937/article/details/99407485
flashal,: 遇到同样的问题,如果有解决办法还请指点,万分感谢
bocai_code: 博主的工程,可以分享一下吗?我死活就没有调出来
m0_45936230: 中断
m0_45936230: 硬件仿真正确,软件仿真进不了终端,博主认为是什么原因呢?