STM32待机唤醒实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《例说STM32》例说STM322020/1/29广州市星翼电子科技有限公司1ALIENTEK开发板购买店铺店铺:讲待机唤醒实验13.1待机模式简介13.2待机模式相关寄存器13.3待机模式配置步骤13.4实验讲解《例说STM32》22020/1/29广州市星翼电子科技有限公司13.1待机模式简介《例说STM32》32020/1/29广州市星翼电子科技有限公司很多单片机都有低功耗模式,STM32也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。STM32的低功耗模式有3种:1)睡眠模式(CM3内核停止,外设仍然运行)2)停止模式(所有时钟都停止)3)待机模式(1.8V内核电源关闭)在运行模式下,我们也可以通过降低系统时钟关闭APB和AHB总线上未被使用的外设的时钟来降低功耗。《例说STM32》42020/1/29广州市星翼电子科技有限公司三种低功耗模式一览表见下表:《例说STM32》52020/1/29广州市星翼电子科技有限公司在这三种低功耗模式中,最低功耗的是待机模式,在此模式下,最低只需要2uA左右的电流。停机模式是次低功耗的,其典型的电流消耗在20uA左右。最后就是睡眠模式了。用户可以根据自己的需求来决定使用哪种低功耗模式。本章,我们就针对STM32的最低功耗模式-待机模式,来做介绍。待机模式可实现STM32的最低功耗。该模式是在CM3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。那么我们如何进入待机模式呢?其实很简单,只要按下图所示的步骤执行就可以了:《例说STM32》62020/1/29广州市星翼电子科技有限公司从上图可知,我们有4种方式可以退出待机模式,即当一个外部复位(NRST引脚)、IWDG复位、WKUP引脚上的上升沿或RTC闹钟事件发生时,微控制器从待机模式退出。从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。《例说STM32》72020/1/29广州市星翼电子科技有限公司从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚,读取复位向量等)。电源控制/状态寄存器(PWR_CSR)将会指示内核由待机状态退出。在进入待机模式后,除了复位引脚以及被设置为防侵入或校准输出时的TAMPER引脚和被是能的唤醒引脚(WK_UP脚),其他的IO引脚都将处于高阻态。13.2待机模式相关寄存器《例说STM32》82020/1/29广州市星翼电子科技有限公司电源控制寄存器(PWR_CR)我们通过设置PWR_CR的PDDS位,使CPU进入深度睡眠时进入待机模式,同时我们通过CWUF位,清除之前的唤醒位。《例说STM32》92020/1/29广州市星翼电子科技有限公司《例说STM32》102020/1/29广州市星翼电子科技有限公司电源控制/状态寄存器(PWR_CSR)这里,我们通过设置PWR_CSR的EWUP位,来使能WKUP引脚用于待机模式唤醒。我们还可以从WUF来检查是否发生了唤醒事件。《例说STM32》112020/1/29广州市星翼电子科技有限公司13.3待机模式配置步骤《例说STM32》122020/1/29广州市星翼电子科技有限公司1)设置SLEEPDEEP位。该位在系统控制寄存器(SCB_SCR)的第二位(详见《CM3权威指南》,第182页表13.1),我们通过设置该位,作为进入待机模式的第一步。2)使能电源时钟,设置WK_UP引脚作为唤醒源。因为要配置电源控制寄存器,所以必须先使能电源时钟。然后再设置PWR_CSR的EWUP位,使能WK_UP用于将CPU从待机模式唤醒。《例说STM32》132020/1/29广州市星翼电子科技有限公司3)设置PDDS位,执行WFI指令,进入待机模式。接着我们通过PWR_CR设置PDDS位,使得CPU进入深度睡眠时进入待机模式,最后执行WFI指令开始进入待机模式,并等待WK_UP中断的到来。4)最后编写WK_UP中断函数。因为我们通过WK_UP中断(PA0中断)来唤醒CPU,所以我们有必要设置一下该中断函数,同时我们也通过该函数里面进入待机模式。13.4实验讲解《例说STM32》142020/1/29广州市星翼电子科技有限公司硬件设计:本章,我们使用了WK_UP按键用于唤醒和进入待机模式。然后通过DS0来指示程序是否在运行。因为DS0和WK_UP在MiniSTM32开发板上都是直接连在STM32的IO口上的,不需要任何修改。实验现象:下载代码到开发板后看到开发板一点反应没有。此时,我们长按WK_UP按键3秒钟左右,可以看到DS0开始闪烁。然后再然后再长按WK_UP,DS0会灭掉,程序再次进入待机模式。《例说STM32》152020/1/29广州市星翼电子科技有限公司软件设计:wkup.c《例说STM32》162020/1/29广州市星翼电子科技有限公司《例说STM32》172020/1/29广州市星翼电子科技有限公司sys.c《例说STM32》182020/1/29广州市星翼电子科技有限公司main函数

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功