打印
[应用相关]

小黑板——PWR几种低功耗模式的说明

[复制链接]
780|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hoop|  楼主 | 2020-12-13 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下心得,T32F403A PWR几种低功耗模式的说明
目前主流的单片机均具备低功耗功能,其中包括AT、ST等型号做得基本都差不多,不过几个低功耗模式之间差异比较大,以下主要从我的观点对各个模式做一个对比
1)Sleep<睡眠>
仅CPU 时钟关闭,其他所有外设时钟比如数字的TMR以及模拟的ADC时钟无影响。注意所有外设时钟都没有被关闭,因此外设还能工作
进入Sleep:
在开PWR时钟前提下清SLEEPDEEP后执行WFI或者WFE即可
AT有将进Sleep命令封装到库函数内,因此用户只需要调用PWR_EnterSleepMode(/*参数*/)即可,ST未做库函数封装,需要用户自己写这几句命令
退出Sleep:
WFI进入的Sleep固定通过外设中断+NVIC使能。WFE进的Sleep可通过三种方式唤醒①外设中断+NVIC使能,②外设中断+SEVONPEND,③EXTI事件
2)Stop<停机>
1.2V供电区域的的所有时钟(包括CPU及普通外设)都被停止,SysTick除外,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。注意外设时钟只是被停止,此时之前被拉高的GPIO还会保持
进入Stop:
在开PWR时钟前提下清PWR_CTR的PDDS位,并设置SLEEPDEEP后执行WFI或者WFE即可
调用库函数PWR_EnterSTOPMode(/*参数*/)
退出Stop:
WFI进入的Stop固定通过EXTI线中断+NVIC使能。WFE进的Stop可通过三种方式唤醒①EXTI中断+NVIC使能,②EXTI中断+SEVONPEND,③EXTI事件
3)Standby<待机>
1.2V供电区域被断电,PLL、HSI和HSE振荡器也被断电,SRAM和寄存器内容丢失,只有备份的寄存器和待机电路维持供电。注意大多数外设被断电,其中用于唤醒的外设除外
进入Standby:
在开PWR时钟前提下清PWR_CTRLSTS中的WUF位,设置PWR_CTR的PDDS位,并设置SLEEPDEEP后执行WFI或者WFE即可
调用库函数PWR_EnterSTANDBYMode()
退出Standby:
此时不再有WFI/WFE进入的唤醒差异,固定唤醒源为WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上外部复位、IWDG复位
小黑板:
A.对于Sleep/Stop,通过WFE进入并经外设/EXTI中断+SEVONPEND或者EXTI事件唤醒的唤醒时间是最短的,因为没有时间损失在中断的进入或退出上
B.Stop唤醒后,如果用户不期望系统时钟为HSI的话,就需要进行重新配置,因为在STOP唤醒后,系统时钟会被硬件固定选择为HSI
C.不管什么唤醒源唤醒,Standby的唤醒后,代码是重新从头执行的,因此Standby模式需要慎用
D.Sleep下的电流消耗一般维持在几十或近百mA级别,Stop下的电流消耗一般维持在一或几mA级别,Standby下的电流消耗一般维持在几个uA级别
E.主要用于调试的MCUDBG中的Bit位DBG_SLEEP、DBG_STOP、DBG_STANDBY对低功耗模式存在一定成都的影响,后续有空的话将对此做一点必要的使用说明

使用特权

评论回复
沙发
fuqinyyy| | 2020-12-13 17:29 | 只看该作者
不错,感谢楼主分享。

使用特权

评论回复
板凳
串联烧烤| | 2020-12-13 23:18 | 只看该作者
sleep还是用的是最多的

使用特权

评论回复
地板
伊桑黑| | 2020-12-13 23:24 | 只看该作者
写得挺好的 刚刚入门的小白也能看得懂

使用特权

评论回复
5
duo点| | 2020-12-14 16:10 | 只看该作者
通俗易懂, 小白也能看得懂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

80

主题

322

帖子

0

粉丝