STMCU小助手
发布时间:2022-2-9 20:36
|
STM32的低功耗模式有3种: 2 ~! @; O* h% G- |1、睡眠模式(CM3内核停止,外设仍然运行)6 e$ y9 p3 K9 P( o* K+ f 2、停机模式(所有时钟都停止)6 A/ C) E9 W8 i( O. L% M+ y, z1 h# W 3、待机模式(1.8v内核电源关闭)
![]() 进入待机模式的方法,以及设置WK_UP引脚用于把STM32从待机模式唤醒的方法: S' H1 Q8 c4 x0 l6 U+ s0 c 一般步骤如下:, o* L8 Q2 q9 B3 b/ E 1、设置SLEEPDEEP位2 q8 J" f: v# }2 ~ SCB_SCR的第二位) `( s7 B$ K) n0 ^+ ]! h1 M# F 2、使能电源时钟,设置WK_UP引脚作为唤醒源 因为要配置电源控制寄存器,所以必须先使能电源时钟。然后再设置PWR_CSR的EWUP位,使能WK_UP用于将CPU从待机模式唤醒。8 |8 w0 { k5 k* l( U" K7 G 3、设置 PDDS PDDS位,执行 WFI 指令,进入待机模式。 通过 PWR_CR 设置 PDDS 位,使得 CPU 进入深度睡眠时待机模式,最后执行 WFI指令开始进入待机模式,并等WK_UP中断的到来8 C5 J+ @9 K( r& v! h: x; J 4、最后编写WK_UP中断函数 下面是进入待机模式的代码
最后实现的现象是,烧入程序,复位后,开始执行程序,进入待机模式,长按WK_UP键3秒,退出待机模式,重新执行代码(从待机模式唤醒后的代码执行 等同于复位后代码的执行),小灯开始闪烁。 之后如果再次长按WK_UP键3秒,就会再次进入待机模式。
上诉代码中非常重要的一句话是:
只有加上这句话,才能实现长按唤醒,而不是一按就唤醒。 |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版