第二十一章待机唤醒实验战舰STM32开发板.pdf
文本预览下载声明
ALIENTEK 战舰STM32开发板
第二十一章 待机唤醒实验
本章我们将向大家介绍STM32 的待机唤醒功能。在本章中,我们将利用WK_UP 按键来实
现唤醒和进入待机模式的功能,然后利用DS0 指示状态。本章将分为如下几个部分:
21.1 STM32 待机模式简介
21.2 硬件设计
21.3 软件设计
21.4 下载验证
298
ALIENTEK 战舰STM32开发板
21.1 STM32 待机模式简介
很多单片机都有低功耗模式,STM32 也不例外。在系统或电源复位以后,微控制器处于运
行状态。运行状态下的HCLK 为CPU 提供时钟,内核执行程序代码。当CPU 不需继续运行时,
可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗,
最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。STM32 的3 种低功耗模
式我们在5.2.4 节有粗略介绍,这里我们再回顾一下。
STM32 的低功耗模式有3 种:
1)睡眠模式(CM3 内核停止,外设仍然运行)
2)停止模式(所有时钟都停止)
3)待机模式(1.8V 内核电源关闭)
在运行模式下,我们也可以通过降低系统时钟关闭APB 和AHB 总线上未被使用的外设的
时钟来降低功耗。三种低功耗模式一览表见表21.1.1 所示:
表21.1.1 STM32 低功耗一览表
在这三种低功耗模式中,最低功耗的是待机模式,在此模式下,最低只需要2uA 左右的电
流。停机模式是次低功耗的,其典型的电流消耗在 20uA 左右。最后就是睡眠模式了。用户可
以根据自己的需求来决定使用哪种低功耗模式。
本章,我们仅对 STM32 的最低功耗模式-待机模式,来做介绍。待机模式可实现 STM32
的最低功耗。该模式是在CM3 深睡眠模式时关闭电压调节器。整个1.8V 供电区域被断电。PLL、
HSI 和HSE 振荡器也被断电。SRAM 和寄存器内容丢失。仅备份的寄存器和待机电路维持供电。
那么我们如何进入待机模式呢?其实很简单,只要按图21.1.1 所示的步骤执行就可以了:
图21.1.1 STM32 进入及退出待机模式的条件
图21.1. 1 还列出了退出待机模式的操作,从图21.1.1 可知,我们有4 种方式可以退出待机
模式,即当一个外部复位(NRST 引脚) 、IWDG 复位、WKUP 引脚上的上升沿或RTC 闹钟事件
299
ALIENTEK 战舰STM32开发板
发生时,微控制器从待机模式退出。从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所
有寄存器被复位。
从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚,读取复位向量等) 。
电源控制/状态寄存器(PWR_CSR)将会指示内核由待机状态退出。
在进入待机模式后,除了复位引脚以及被设置为防侵入或校准输出时的TAMPER 引脚和被
使能的唤醒引脚(WK_UP 脚),其他的IO 引脚都将处于高阻态。
图21.1.1 已经清楚的说明了进入待机模式的通用步骤,其中涉及到2 个寄存器,即电源控
制寄存器(PWR_CR )和电源控制/状态寄存器(PWR_CSR )。下面我们介绍一下这两个寄存器:
电源控制寄存器(PWR_CR ),该寄存器的各位描述如图21.1.2 所示:
300
ALIENTEK 战舰STM32开发板
图21.1.2 PWR_CR 寄存器各位描述
这里我们通过设置PWR_CR 的PDDS 位,使CPU 进入深度睡眠时进入待机模式,同时我
们通过CWUF 位,清除之前的唤醒位。电源控制/状态寄存器(PWR_CSR )的各位描述如图21.1.3
所示:
图21.1.3 PWR_ CSR 寄存器各位描述
这里,我们通过设置PWR_CSR 的EWUP 位,来使能WKUP 引脚用于待机模式唤醒。我
们还可以从WUF 来检查是否发生了唤醒事件。不过本章我们并没有用到。
通过以上介绍,我们了解了进入待机模式的方法,以及设置 WK_UP 引脚用于把 STM32
从待机模式唤醒
显示全部