打印
[STM32F0]

STM32物联网项目-低功耗模式

[复制链接]
1057|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
低功耗模式 电源框图VDD供电区域一般为2V ~ 3.6V,经过电压调节器可降压到1.8V给CPU核心、存储器和内置数字外设供电,为了降低CPU的功耗,
后备供电区域可由电池供电,输入引脚为VBAT



使用特权

评论回复
沙发
wang6623|  楼主 | 2022-9-30 23:04 | 只看该作者
STM32各种电源

使用特权

评论回复
板凳
wang6623|  楼主 | 2022-9-30 23:06 | 只看该作者
STM32的低功耗模式

STM32F10xxx有三种低功耗模式:

    睡眠模式:Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行

使用特权

评论回复
地板
wang6623|  楼主 | 2022-9-30 23:25 | 只看该作者
停止模式:所有的时钟都已停止

使用特权

评论回复
5
wang6623|  楼主 | 2022-9-30 23:26 | 只看该作者
待机模式:1.8V电源关闭

使用特权

评论回复
6
wang6623|  楼主 | 2022-9-30 23:29 | 只看该作者

使用特权

评论回复
7
wang6623|  楼主 | 2022-9-30 23:30 | 只看该作者
模式从上到下功耗越低,但唤醒条件越严格

使用特权

评论回复
8
wang6623|  楼主 | 2022-9-30 23:30 | 只看该作者
此外,在运行模式下,可以通过以下方式中的一种降低功耗:

    降低系统时钟。时钟频率越慢功耗越低,例如平时使用芯片时的系统时钟频率都是72MHz,这能满足绝大部分外设的要求,但如果是点个流水灯,又想要低功耗,就没必要使用72MHz的,用8M或者更低能运行的话就用低点的,

使用特权

评论回复
9
wang6623|  楼主 | 2022-9-30 23:31 | 只看该作者
关闭APB和AHB总线上未被使用的外设时钟。

使用特权

评论回复
10
wang6623|  楼主 | 2022-9-30 23:32 | 只看该作者
低功耗模式下的自动唤醒(AWU)


低功耗模式下的自动唤醒(AWU)在STM32F1是没有的,在F4是有的,但F1可以通过RTC闹钟事件来唤醒

使用特权

评论回复
11
wang6623|  楼主 | 2022-9-30 23:36 | 只看该作者
如下面STM32F4的RTC框图,就有16位的唤醒自动重载寄存器,可以通过设定值来唤醒

使用特权

评论回复
12
wang6623|  楼主 | 2022-9-30 23:37 | 只看该作者
实验目标

触摸按键1被按下,则系统进入睡眠模式,点击触摸按键4退出睡眠模式;

触摸按键2被按下,则系统进入停止模式,点击触摸按键4退出停机模式;

触摸按键3被按下,则进入待机模式,通过复位按键退出待机模式;

使用特权

评论回复
13
wang6623|  楼主 | 2022-9-30 23:38 | 只看该作者
CubeMX配置

按键外部中断的配置,LED灯作系统的指示作用,拉低WIFI模块的使能脚,不然模块会耗电

使用特权

评论回复
14
wang6623|  楼主 | 2022-9-30 23:39 | 只看该作者

使用特权

评论回复
15
wang6623|  楼主 | 2022-9-30 23:42 | 只看该作者
初始化串口1,用于打印信息

使用特权

评论回复
16
wang6623|  楼主 | 2022-9-30 23:43 | 只看该作者
程序
stm32f1xx_hal_pwr.h

下面是进入低功耗模式的三个HAL库函数,可以直接调用

使用特权

评论回复
17
wang6623|  楼主 | 2022-9-30 23:44 | 只看该作者
/* Low Power modes configuration functions ************************************/
void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry);                //进入停止模式
void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry);        //进入睡眠模式
void HAL_PWR_EnterSTANDBYMode(void);                                                                //进入停机模式

使用特权

评论回复
18
wang6623|  楼主 | 2022-9-30 23:45 | 只看该作者
进入或退出睡眠模式

使用特权

评论回复
19
wang6623|  楼主 | 2022-9-30 23:45 | 只看该作者
以WFI进入睡眠模式后,是可以通过任意一个中断来唤醒的,这里就需要注意了,平时使用的延时函数HAL_Delay()是以SysTick滴答定时器来作为时基的,并且NVIC中默认已经开启了SysTick的中断,如果直接在主函数中调用HAL_PWR_EnterSLEEPMode函数进入睡眠模式的话,SysTick滴答定时器的中断就会立马唤醒系统,达不到低功耗的效果;所以在进入睡眠模式之前,需要先关闭SysTick的中断

使用特权

评论回复
20
wang6623|  楼主 | 2022-9-30 23:46 | 只看该作者
同理,系统中开启的用户中断也要关闭,如定时器,外部中断等,可以留某些中断用于退出睡眠模式

使用特权

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

本版积分规则

62

主题

409

帖子

0

粉丝