最近做的项目中要求低功耗,在单片机完成了手头上的工作之后,就进入低功耗模式,项目的需求是单片机进入低功耗模式的时候系统时钟从HSE切到HSI,但是在未进入低功耗模式之前引脚是什么状态,进入低功耗模式之后也不应该改变。可以通过RTC定时唤醒,或者接收到串口数据就唤醒,处理完数据后再进入stop模式。查询了一些资料之后,发现stop模式最符合项目需求。下面讲述一下什么是低功耗: 一、stm32支持三种低功耗模式,可以在低功耗,短启动,多种唤醒模式下寻找平衡。 1、SleepMode睡眠模式,只有CPU停止运行,所有的外设处于工作状态并且可以在发生中断/事件时唤醒CPU。 2、StopMode停机模式,保持SRAM和寄存器内容不丢失,达到最低的电能消耗。停止所有内部1.8V部分的供电, PLL、 HSI的RC振荡器和HSE晶体振荡器被关闭,调压器可以被置于普通模式或低功耗模式。可以通过任一EXTI从停机模式中唤醒, EXTI信号可以是16个外部I/O口之一、 PVD的输出、 RTC闹钟或USB的唤醒信号。 3、StandbyMode待机模式。最低的电能消耗。内部1.8V部分的供电被切断; PLL、 HSI的RC振荡器和HSE晶体振荡器关闭;SRAM和寄存器的内容将消失,但后备寄存器的内容仍然保留,待机电路仍工作。从待机模式退出的条件是: NRST上的外部复位信号、 IWDG复位、 WKUP引脚上的一个上升边沿或RTC的闹钟到时。
|