而在那种情况下用那种模式呢?
睡眠模式:
在ARM内核无事可做的时候,可以进入睡眠模式。但设备外设依旧可以工作,需要RM的内核工作时,再将ARM内核进行唤醒工作。
优点:对系统影响最小
缺点:节能效果最差
停机模式:
因SRAM内容不消失,程序不复位,可在唤醒后继续运行。节能效果与待机模式近似,却有着更多优势。主要用于电池供电的设备上,提高电池寿命。在电池供电的产品中必须使用,在外部供电的产品中没必要使用。
优点:节能效果好,程序不会复位
缺点:恢复时间较长
待机模式:
由于SRAM内容消失,唤醒后程序必须复位,从头开始运行。因为待机和停机之间的功耗差别是uA级的,几乎没有差别,所以开发者大多使用停机模式,待机模式极少使用。在一些偶尔需要工作的场合,且工作量不大、不复杂的情况下,待机模式可以保证最低的功耗。比如应用在室外温度测量产品上,每1小时测量一次。可用RTC闹钟唤醒,测量完再待机。
优点:最节能
缺点:程序会复位,只有少数条件可唤醒
综合各自的优点进行合适的模式进行开发吧
下面简单对各种模式进行使用以下(STM32CubeMX配置)
睡眠模式(HAL库)应用
如果想使用睡眠模式,只需要调用写好的HAL库,既下面的函数(唤醒使用中断)
HAL_PWR_EntersSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI)

停机模式(HAL库)应用这里简单的进行下使用,来看到停机模式的效果,设置引脚模式 

使用停机模式,则调用以下的函数 HAL_PWR_EntersSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI) 设置一个按键,进行中断唤醒实验,最后看到的结果就是当运行到函数之前,LED灯进行闪烁,执行到停机模式函数停止等待唤醒。
待机模式根据标志位进行操作,因为一旦使用待机唤醒,这个时候单片机就会从从新开始(就像按了复位按键),在进行这一次运行。根据四个条件唤醒之后,从新执行一遍程序。 总结: 根据实际应用需求来进行选择,,其实运用倒是简单,但要选择合适的模式。 来源: 整理文章为传播相关技术,网络版权归原作者所有,如有侵权,请联系删除。
|