STM32的3种低功耗模式:

  1. 睡眠模式:内核停止,外设如NVIC,系统时钟Systick仍运行。
  2. 停止模式:所有时钟都已停止;1.8V内核电源工作;PLL,HIS和HSERC振荡器功能禁止;寄存器和SRAM内容保留。
  3. 待机模式:1.8V内核电源关闭;只有备份寄存器和待机电路维持供电;寄存器和SRAM内容全部丢失;实现最低功耗。

STM32的3种低功耗唤醒方式:

STM32待机模式:

在待机模式下,所有的I/O引脚均处于高阻态,除了复位引脚、被使能的唤醒引脚和TAMPER引脚。待机模式下只有2uA的电流,停机模式下20uA的电流。 
库函数进入待机模式: 
1. 使能电源时钟。 
2. 设置WK_UP引脚作为唤醒源。 
3. 设置SLEEPDEEP位,设置PDDS位,执行WFI指令,进入待机模式。 
程序源码:

#include "wkup.h"
#include "led.h"
#include "delay.h"void Sys_Standby(void)
{  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能电源时钟PWR_WakeUpPinCmd(ENABLE);  //使能唤醒管脚功能PWR_EnterSTANDBYMode();    //进入待命(STANDBY)模式
}//系统进入待机模式
void Sys_Enter_Standby(void)
{            RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //复位所有IO口Sys_Standby();
}//检测WKUP脚的信号
//返回值1:连续按下3s以上
//     0:错误的触发
u8 Check_WKUP(void)
{u8 t=0; //记录按下的时间LED0=0; //亮灯LED0 while(1){if(WKUP_KD){t++;            //已经按下了 delay_ms(30);if(t>=100)      //按下超过3秒钟{LED0=0;     //点亮DS0 return 1;   //按下3s以上了}}else { LED0=1;return 0; //按下不足3秒}}
} //中断,检测到PA0脚的一个上升沿.
//中断线0线上的中断检测
void EXTI0_IRQHandler(void)
{                                                       EXTI_ClearITPendingBit(EXTI_Line0); // 清除LINE10上的中断标志位        if(Check_WKUP())//关机?{         Sys_Enter_Standby();  }
}
//PA0 WKUP唤醒初始化
void WKUP_Init(void)
{   GPIO_InitTypeDef  GPIO_InitStructure;         NVIC_InitTypeDef NVIC_InitStructure;EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA和复用功能时钟GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;     //PA.0GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD;//上拉输入GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化IO//使用外部中断方式GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //中断线0连接GPIOA.0EXTI_InitStructure.EXTI_Line = EXTI_Line0;  //设置按键所有的外部线路EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;         //设外外部中断模式:EXTI线路为中断请求EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  //上升沿触发EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure); // 初始化外部中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //使能按键所在的外部中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //先占优先级2级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //从优先级2级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器if(Check_WKUP()==0) Sys_Standby();    //没有按三秒,不是开机,进入待机模式
}

STM32的3种低功耗模式相关推荐

  1. stm32f103c6t6下的HAL库搭建三种低功耗模式及实战分析(stm32通用)

    目录 三种低功耗模式介绍 睡眠模式(sleep mode) 停止模式(stop mode) 待机模式(standby mode) 总结 实战测试 个别电路原理图 功耗分析 ADC功耗大解决方案 ADC ...

  2. 32怎么通过一个按键实现不同工作模式_stm32几种低功耗模式的实现和差别

    点击上方蓝字关注我哦- 01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式 ...

  3. STM32的三种Boot模式的差异

    STM32的三种Boot模式的差异 一. STM32启动配置 二. 内置SRAM简介 三. 例程验证 3.1 硬件设置 3.2 创建工程调试版本 3.3 配置分散加载文件 3.5 配置中断向量表 3. ...

  4. STM32的三种Boot模式地址分配

    STM32的三种Boot模式地址分配 一.STM32的三种Boot模式 1.主闪存存储器 2.系统存储器 3.内置SRAM 二.三种模式地址分配验证 主闪存存储器 系统存储器 三.汇编程序完成每间隔1 ...

  5. 浅谈STM32的三种Boot模式的差异以及用汇编语言设计一个LED灯程序

    STM32的三种Boot模式的差异 1.三种方式的比较 用汇编程序完成LED的程序 1.三种方式的比较 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值 ...

  6. stm32 3种低功耗模式

    STM32 的低功耗模式有 3种: 1)睡眠模式(CM3内核停止,外设仍然运行) 2)停止模式(所有时钟都停止) 3)待机(standby)模式(1.8V内核电源关闭) 从待机模式唤醒后的代码执行等同 ...

  7. STM32的八种工作模式

    一.模式介绍 STM32单片机具有高性能.低成本.低功耗的优点,与它打交道就必须先了解它的几种工作模式,它共有八种IO口模式,分别是:模拟输入.浮空输入.上拉输入.下拉输入.开漏输出.推挽输出.复用开 ...

  8. 浅谈STM32的三种Boot模式

    文章目录 一.关于BOOT模式的介绍 二.实际例子进行分析 三.分析上电启动流程 四.小结 五.参考资料 一.关于BOOT模式的介绍 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的 ...

  9. STM32的三种BOOT模式

    文章目录 一.三种BOOT模式的对比 1.内部 FLASH 启动方式 2.内部 SRAM 启动方式 3.系统存储器启动方式 二.BOOT模式下代码运行后所在地址分析 1.从内部 FLASH 启动 2. ...

最新文章

  1. CMake编译工具与项目构建
  2. kangle web server源代码安装简明教程
  3. Markdown的一些常用的语法
  4. background 旋转_基于HTML5 Canvas 实现矢量工控风机叶轮旋转
  5. 【软考-软件设计师】CPU的功能与组成
  6. 22行满分代码:L1-054 福到了 (15分)
  7. spring vaadin_在Spring Boot中使用Vaadin的简介
  8. dubbo源码解析(一)
  9. 微信小程序中实现瀑布流布局和无限加载
  10. 推荐几篇开源论文,包含人脸、目标检测跟踪、分割、去噪、超分辨率等
  11. java dao层的泛型get方法_dao层的泛型实现(2种方法)
  12. Python笔记:变量的作用域
  13. 差分pid模块_基于数字PID切换控制的Buck变换器研究
  14. aliplayer隐藏工具条
  15. itext pdf 基本使用实战
  16. android多图拼接长图并合理显示
  17. 大数据之Kafka介绍
  18. [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  19. 大数据运维学习成长路线
  20. 思科—计算机网络课程设计—第一章路由概念测试

热门文章

  1. 使用 java-client 连接k8s
  2. Go语言标准库学习之encoding/gob——Go语言Gob流的管理
  3. OBServer启动恢复解析
  4. C语言中双下划线的用法__FILE__
  5. 007. 如何培养自己的赚钱能力
  6. 系统平台补猜你喜欢的方式技巧
  7. 由酷狗官网界面改造成的焦点新闻插件
  8. highchart图表
  9. EMC-电感选择不当引起的RE辐射超标
  10. 苹果加内存-macbook pro 升级内存