STM32的低功耗模式有3种:
1、睡眠模式(CM3内核停止,外设仍然运行)
2、停机模式(所有时钟都停止)
3、待机模式(1.8v内核电源关闭)

进入待机模式的方法,以及设置WK_UP引脚用于把STM32从待机模式唤醒的方法
一般步骤如下:
1、设置SLEEPDEEP位
SCB_SCR的第二位
2、使能电源时钟,设置WK_UP引脚作为唤醒源
因为要配置电源控制寄存器,所以必须先使能电源时钟。然后再设置PWR_CSR的EWUP位,使能WK_UP用于将CPU从待机模式唤醒。
3、设置 PDDS PDDS位,执行 WFI 指令,进入待机模式。
通过 PWR_CR 设置 PDDS 位,使得 CPU 进入深度睡眠时待机模式,最后执行 WFI指令开始进入待机模式,并等WK_UP中断的到来
4、最后编写WK_UP中断函数

下面是进入待机模式的代码

//进入待机模式
void STAND_By(void){
SCB->SCR |= <<; //设置SLEEPDEEP位
RCC->APB1ENR |= <<;//使能电源时钟
PWR->CSR |= <<; //设置WK_UP作为唤醒源
PWR->CR |= <<; //设置PDDS位,进入深睡眠模式
PWR->CR |= <<; //清除唤醒位
__ASM volatile("wfi"); //执行WFI命令
}

最后实现的现象是,烧入程序,复位后,开始执行程序,进入待机模式,长按WK_UP键3秒,退出待机模式,重新执行代码(从待机模式唤醒后的代码执行 等同于复位后代码的执行),小灯开始闪烁。

之后如果再次长按WK_UP键3秒,就会再次进入待机模式。

//WK_UP键初始化
void WKUP_Init(void){
RCC->APB2ENR |= << ; //使能GPIOA时钟
//设置GPIOA为上拉输入
GPIOA->CRL &= 0xFFFFFFF0;
GPIOA->CRL |= 0x00000008;
GPIOA->IDR |= <<; //中断配置
Ex_NVIC_Config(GPIO_A,,RTIR);//上升沿有效
if(CHECK_Wkup()==) STAND_By();
MY_NVIC_Init(,,EXTI0_IRQn,);//中断分组
}

上诉代码中非常重要的一句话是:

if(CHECK_Wkup()==) STAND_By();

只有加上这句话,才能实现长按唤醒,而不是一按就唤醒。

stm32实现待机唤醒的更多相关文章

  1. STM32之待机唤醒

    前段时间我稍微涉及节能减排大赛..倡导节能的社会..没错了.你真是太聪明了..知道了我今天要讲关于STM32节能方面的模块..没错..这标题已经告诉你了是吧..哦,对,标题有写..所以..言归正传.至 ...

  2. stm32之复位与待机唤醒

    一.复位 stm32复位有三种类型,分别为系统复位.电源复位和备份域复位. 其中系统复位又分为: NRST引脚低电平(外部复位) 窗口看门狗计数结束 独立看门狗计数结束 软件复位 低功耗管理复位 二. ...

  3. (stm32f103学习总结)—待机唤醒实验

    一.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430.STM8L等,我们的STM32 也不例外.默认情况下,系统复位或上电复位后,微控制器进入运行模 ...

  4. STM32 STOP模式唤醒后的时钟

    进了STOP模式后,PLL停掉了,所以,如果开始的时钟配置,用的是PLL,那么唤醒后,需要重新配置RCC. 如果使用的是PLL,及时是用MSI作为时钟源,放大出来的,比如4M的MSI,PLL放大到48 ...

  5. 亲测实验,stm32待机模式和停机模式唤醒程序的区别,以及唤醒后程序入口

    这两天研究了STM32的低功耗知识,低功耗里主要研究的是STM32的待机模式和停机模式.让单片机进入的待机模式和停机模式比较容易,实验中通过设置中断口PA1来响应待机和停机模式. void EXTI1 ...

  6. Stm32外围模块编程初始化步骤

    Stm32外围模块编程初始化步骤: 一.外部中断 1)初始化 IO 口为输入. 这一步设置你要作为外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要 ...

  7. stm32学习基本知识点

    1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为st ...

  8. 第23章 RTX 低功耗之待机模式

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php STM32F103 待机模式介绍 本章节我们主要讲解待机模式,待机模式可实现系统的最低功耗.该模式是在 ...

  9. FreeRTOS 低功耗之待机模式

    STM32F103 如何进入待机模式在 FreeRTOS 系统中,让 STM32 进入待机模式比较容易,调用固件库函数PWR_EnterSTANDBYMode 即可. STM32F103 如何退出待机 ...

随机推荐

  1. 使用Qt报错error while building deploying project

    方法一:点击左侧的“项目”栏,看“构建目录”栏的路径,一定要注意,在路径中一定不要出现汉字,否则一定会报“error while building deploying project”的错误. 方法二 ...

  2. Mesos架构

    Mesos Architecture 上图显示了 Mesos 的主要组成部分. Mesos 由一个 master daemon 来管理 slave daemon 在每个集群节点上的运行, mesos ...

  3. [原]左右的移动&lt;&lt;&gt;&gt;&lt;&gt;jQuery的实现

    $(function () {             $('#toAllLeft').click(function () {                 $('#se1 option').app ...

  4. 激活OFFICE2010时,提示choice.exe不是有效的win32程序

    我在安装office2010破解版时,提示choice.exe不是有效的win32应用程序 删除choice.exe再激活,按提示找到目录删掉这个文件,需要设置显示隐藏文件夹

  5. Windows恢复Grub引导,用grub安装ubuntu

    http://www.linuxidc.com/wap.aspx?nid=18027&p=&cp=&cid=http://m.blog.chinaunix.net/uid-22 ...

  6. editplus 正则删换行

    editplus regular expression  ctrl+h 1.替换开始是空行 ^[\t ]*\n 2.替换换行 \n 3.替换包含某字符 .*@126.* excel去重复(或者保留一个 ...

  7. PHP递归算法的一个实例 帮助理解

    递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行,可能这样给大家讲 ...

  8. vim Podfile

    platform :ios, "7.0"pod "AFNetworking"pod "SDWebImage"pod "SVProg ...

  9. we7调用模板如何区分栏目页与详细页

    <a href='/xsdt/0000-00-00-00.html?id=<%# Eval("ID")%>'> 0000-00-00-00.html传参数来 ...

  10. mysql查询的cache

    Mysql SQL_NO_CACHE不生效的问题 贾春春 1 票 1224 我想通过SQL_NO_CACHE得知某个query查询速度,但似乎无法实现 例如首次查询: mysql> select ...