STMCU小助手
发布时间:2022-4-10 16:53
(一)低功耗模式介绍
STM32三种低功耗模式: 睡眠模式 停止模式 待机模式 1、睡眠模式 只有内核时钟关闭并且停止运行,外设都还在运行。可以通过任意一个中断或者唤醒事件唤醒。这个模式不怎么常用,功耗降低的不怎么明显。 2、停止模式 所有1.8V供电区域的时钟都被停止, PLL、HIS和 HSE RC振荡器的功能被禁止,内存(SRAM)和寄存器的内容被保留了下来。可以通过任意外部中断进行唤醒(在外部中断寄存器中设置),此模式下被唤醒后单片机先执行外部中断函数,然后接着上次进入停止模式的语句位置继续往下执行。 3、待机模式 功耗最低的一种模式, 该模式关闭电压调节器,整个1.8V供电区域被断电, PLL、HSI和 HSE 振荡器也被断电,只有备份寄存器和待机电路维持供电,可以说是该断的电都断了。 可以通过WKUP引脚上升沿、RTC闹钟事件、复位引脚、看门狗复位这几种固定的方式进行唤醒,这个模式的唤醒跟复位差不多,唤醒后除了电源控制/状态寄存器(PWR_CSR)内容还在,其他所有寄存器都被复位了,程序会从头开始执行。从待机模式唤醒后的代码执行等同于复位后执行。 4、快速应用了解 RTC闹钟唤醒实质还是外部中断唤醒(STM32F103RB的外部中断线17),只不过是片内处理了。 在停止模式下,如果在进入该模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。(这段文字摘自STM32中文参考手册,就是说如果使用了ADC,那么进入低功耗之前先关闭ADC。) 停止模式唤醒之后,默认使用的是HSI 8M的时钟,需要重新初始化时钟和外设 进入低功耗之前可以将引脚全部配置为浮空输入或者Anglog模式,这样最省电,如果你是用STM32CUBEMX,在这里可以看到这么一项配置就是将没有用到的引脚配置为了Anglog模式:
对于特殊的一些唤醒方式,例如串口接收中断,让串口收到数据的时候自动唤醒单片机这种方式,其实还是使用的外部中断,一般是在进入低功耗之前先将串口的引脚重置并配置为外部中断引脚,外部中断触发唤醒后,再将引脚配置回串口即可。 设置闹钟事件时间的时候,要看芯片支持的是秒中断还是时间中断。比如10x系列的,要通过当前的RTC值去设置下次的闹钟,40X系列的直接可以设置时间。 (二)唤醒STOP和STANDBY 停止模式的唤醒需要外部中断,那么就可以配置一个按键进行唤醒,由于RTC闹钟事件中断连接到了外部中断线17,所以RTC唤醒的本质也是外部中断。下面对两种唤醒方式分别演示代码。 1、WKUP唤醒 这里我使用两个按键对STOP模式进行唤醒演示:
开启外部中断:
重定向printf函数到串口1:
覆写外部中断回调函数:
进入STOP和STANDBY函数:
main函数:
程序运行效果:
将while(1)死循环的sys_enter_stop_mode函数屏蔽掉,开启sys_enter_standby_mode函数测试standby模式,这个模式下就只能按WKUP按键了,按另一个按键是唤醒不了的,运行效果:
当前开启的功能有两个LED灯、一路串口和两个按键,使用万用表测电流在运行模式下大概34mA,STOP和STANDBY模式下的电流几乎一致大概是在8mA,这个值是很大的了,应该是我板子上还有其他很多器件耗电了,抽空用最小系统试试,但是这个实现效果说明低功耗的功能是没问题的。 2、RTC唤醒 进入低功耗:
配置RTC的闹钟时间:
覆写闹钟事件中断的回调函数:
main函数:
STOP模式唤醒运行效果:
停止模式唤醒运行效果:
当前开启的功能有两个LED灯、一路串口和RTC,使用万用表测电流在运行模式下大概38mA,STOP和STANDBY模式下的电流几乎一致大概是在13mA。虽然电流很大,但是验证进入低功耗模式是没问题的。 |
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
【下载有礼】STM32 Finder华为应用商店正式上线!移动选型工具助力开发效率升级
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
微信公众号
手机版