0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的待机唤醒实验

汽车电子技术 来源:玩转单片机 作者:Julian 2023-02-10 15:01 次阅读

很多单片机具有低功耗模式,默认情况下,系统复位或上电复位后,微控制器进入运行模式。在运行模式下,HCLK 为 CPU 提供时钟,并执行相应程序。当需要实现低功耗项目的时候,可以利用多种低功耗模式来节省功耗。

运行模式下降低功耗方式

降低系统时钟速度

不使用 APBx 和 AHB 外设时,将对应的外设时钟关闭

STM32 提供了 3 种低功耗模式

睡眠模式( 内核停止,外设如NVIC,系统时钟Systick仍运行。)

停止模式(所有时钟都已停止。1.8V内核电源工作。PLL,HIS和HSE RC振荡器功能禁止。寄存器和SRAM内容保留)

待机模式( 1.8V内核电源关闭。只有备份寄存器和待机电路维持供电。寄存器和SRAM内容全部丢失。实现最低功耗。)

这三种模式所需的功耗是逐级递减,也就是说待机模式功耗是最低的,需要具体了解的同学可以去看下STM32中文参考手册


poYBAGPl64KABt96AALuzvJbJqM605.png

STM32电源框图

poYBAGPl65CAXflZAAHOvQGtgsA712.png

待机模式

poYBAGPl65qATFfZAAIvTMXceuE673.png

检测到外部复位(NRST 引脚)、IWDG 复位、 WKUP 引脚上升沿、 RTC 闹钟事件的上升沿时,微控制器退出待机模式。本章我们是通过 WKUP 引脚(PA0)上升沿来退出待机模式,当然也可以直接通过芯片复位管脚 NRST 退出。

从待机模式唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有的寄存器豆

被复位,程序将按照复位(启动引脚采样、复位向量已获取等)后的方式重新执行。电源控制/状态寄存器(PWR_CSR)将会指示内核由待机状态退出。

在进入待机模式后,除了复位引脚以及被设置为防侵入或校准输出时的TAMPER (PC13)引脚和被使能的唤醒引脚( WK_UP 脚(PA0)),其他的 IO 引脚都将处于高阻态

待机模式配置步骤

/*******************************************************************************
* 函 数 名         : Enter_Standby_Mode
* 函数功能       : 进入待机模式
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Enter_Standby_Mode(void)
{
    
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外设时钟
  
  PWR_ClearFlag(PWR_FLAG_WU);//清除Wake-up 标志
  
  PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚  使能或者失能唤醒管脚功能
  
  
  PWR_EnterSTANDBYMode();//进入待机模式
}

主函数

/*******************************************************************************
* 函 数 名         : main
* 函数功能       : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
int main()
{

  SysTick_Init(72);
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
  LED_Init();
  USART1_Init(9600);
  
  while(1)
  {
    printf("time: 5rn");
    led1=0;
    delay_ms(1000);  //隔1秒显示计数
    
    printf("time: 4rn");
    led1=1;
    delay_ms(1000);
    
    printf("time: 3rn");
    led1=0;
    delay_ms(1000);
    
    printf("time: 2rn");
    led1=1;
    delay_ms(1000);
    
    printf("time: 1rn");
    led1=0;
    delay_ms(1000);
    
    printf("进入系统待机模式rn");
    Enter_Standby_Mode();  
  }
}

实验现象

未进入待机模式时LED一秒闪烁一次,串口一秒打印一次数据,五秒后进入待机模式

--END--


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147636
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620826
  • 低功耗
    +关注

    关注

    9

    文章

    2227

    浏览量

    102667
收藏 人收藏

    评论

    相关推荐

    关于STM32待机唤醒功能

    本文我们来学习下STM32待机唤醒功能。要实现的功能是:系统运行时 D1 指示灯闪烁,5 秒后进入待机模式,D1 指示灯熄灭,同时串口 printf输出相关提示信息,可通过 K_UP
    发表于 07-20 17:57 5354次阅读

    请问ucosii stm32待机唤醒唤醒源怎么区分?

    我用stm32+ucosii写了一个程序,现在碰到了一个关于休眠唤醒的问题。首先我采用的是待机模式休眠、wkup脚唤醒重启,同时防止系统跑飞,加了软狗和硬狗监测系统。现在是
    发表于 10-08 08:11

    「正点原子STM32Mini板资料连载」第十九章 待机唤醒实验

    1)实验平台:正点原子STM32mini开发板2)摘自《正点原子STM32 不完全手册(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子第十九章 待机
    发表于 04-09 11:30

    STM32待机唤醒的实现方法

    唤醒。具体程序参考原子哥的唤醒实验代码。从正常运行模式切换到待机模式:按住wkup键 外部中断0中断被触发 执行中断服务函数 Check_up()函数开始检测 如果时间没超过3s 返回
    发表于 05-26 07:00

    STM32待机唤醒实验分析

    STM32待机唤醒实验分析(基于原子哥程序)  
    发表于 02-02 07:09

    STM32实现待机唤醒

    STM32实现待机唤醒 寄存器版上篇使用了库函数实现 待机唤醒本文将使用寄存器版本实现关机模式寄存器版本跟库函数版本实现基本一致,可以通过查
    发表于 08-17 09:10

    STM32实现待机唤醒

    STM32实现待机唤醒 库函数版很多单片机都有低功耗模式,STM32 也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的 HCLK 为 CPU 提供时钟,内核执行程序代
    发表于 08-18 06:59

    记录STM32待机模式的进入和唤醒

    数据,采集完毕进入停止模式,定时器唤醒等待下次数据采集。(stm32f103ret6)备注:本节只记录待机模式的进入和唤醒,停止模式的实现方式见[S
    发表于 08-18 06:46

    请问STM32如何实现待机唤醒

    请问STM32如何实现待机唤醒
    发表于 11-23 06:20

    如何对STM32单片机的待机模式进行唤醒实验

    STM32单片机有哪几种低功耗模式呢?如何对STM32单片机的待机模式进行唤醒实验呢?
    发表于 11-25 06:37

    ALIENTEK_MINISTM32_实验12_待机唤醒实验

    ALIENTEK MINISTM32 实验12 待机唤醒实验,很好的资料,快来下载吧
    发表于 02-19 11:36 6次下载

    STM32CubeMX系列|待机唤醒

    待机唤醒1. 低功耗模式简介2. 硬件设计本实验用D1指示灯提示系统正常运行,指示灯熄灭表示进入待机模式,K_UP按键用来唤醒
    发表于 12-24 19:11 0次下载
    <b class='flag-5'>STM32</b>CubeMX系列|<b class='flag-5'>待机</b><b class='flag-5'>唤醒</b>

    STM32学习心得二十二:低功耗待机唤醒实验

    记录一下,方便以后翻阅~主要内容:1) STM32低功耗模式讲解;2) 寄存器和库函数配置;3) 实验代码解读。实验功能:针对GPIOA,引脚0,启动后LED0和LED1闪烁,长按3秒进入
    发表于 12-31 19:09 12次下载
    <b class='flag-5'>STM32</b>学习心得二十二:低功耗<b class='flag-5'>待机</b><b class='flag-5'>唤醒</b><b class='flag-5'>实验</b>

    基于STM32单片机待机唤醒实验使用库文件设计

    基于STM32单片机待机唤醒实验使用库文件设计源代码
    发表于 04-26 14:45 0次下载

    STM32实例-待机唤醒实验

    STM32实例-待机唤醒实验
    的头像 发表于 10-26 15:48 1187次阅读
    <b class='flag-5'>STM32</b>实例-<b class='flag-5'>待机</b><b class='flag-5'>唤醒</b><b class='flag-5'>实验</b>