STM32单片机按功耗由高到低排列,其工作模式可分为运行、睡眠、停止和待机。上电复位后,STM32处于运行状态,但其内核若不再继续运行,可选择进入三种低功耗模式降低功耗,那么如何选?
1、睡眠模式
该模式此时关闭了内核时钟,而片上外设和其他CM4外设扔正常工作。在这种模式下,内核停止执行新的代码,但会保留睡眠前的内核寄存器和内存数据。
唤醒方式可分为中断唤醒和事件唤醒。当中断唤醒时,单片机将进入中断服务程序,执行完毕后继续执行WFI指令后的程序;事件唤醒则直接执行WFE后的程序。由于睡眠模式仍未关闭所有时钟,所以唤醒延迟几乎可忽略不计。
2、停止模式
停止模式相比睡眠模式更进一步,关闭了除1.2V区域电源外的所有时钟,导致所有外设停止工作。然而,由于保留了内核寄存器和内存的信息,从停止模式唤醒后,单片机可以继续执行上次停止的代码。
唤醒方式与睡眠模式类似,但唤醒延迟有所增加。这是因为停止模式唤醒后,STM32会使用HSI(f1的HSI为8M,f4为12M)作为系统时钟,因此需要在程序上重新配置系统时钟。此外,如果调压器或FLASH工作在低功耗模式,唤醒延迟还会包括它们从低功耗模式切换至正常模式的时间。
3、待机模式
待机模式是STM32单片机的最低功耗状态,不仅关闭了所有时钟,还关闭了1.2V区域的电源。因此,从待机模式唤醒后,单片机无法保留之前的代码运行记录,只能进行复位操作并从头开始执行程序。
唤醒待机模式的方式主要有三种:WKUP引脚上升沿唤醒、NRST引脚复位唤醒和单片机系统重新上电唤醒。其中,WKUP引脚上升沿唤醒是通过检测PA0引脚的上升沿信号来实现的;NRST引脚复位唤醒则是通过按下复位按键来实现的;而单片机系统重新上电则等同于硬件复位。
4、唤醒方式对比
·睡眠模式:可通过中断或事件唤醒,唤醒延迟低;
·停止模式:同样可通过中断或事件唤醒,但唤醒延迟较高,因为需要重新配置系统时钟和等待其他模块恢复正常工作状态;
·待机模式:仅可通过WKU引脚上升沿、NRST引脚复位或单片机系统重新上电唤醒,唤醒后需从头开始执行程序。
本文凡亿企业培训原创文章,转载请注明来源!