STM32进入低功耗模式以及唤醒(RTC+中断)

发布者:mancozc最新更新时间:2019-03-29 来源: eefocus关键字:STM32  低功耗模式  唤醒  RTC  中断 手机看文章 扫描二维码
随时随地手机看文章

在确认使用低功耗功能后,大家铁定会通过不同途径查找相关的资料,了解到什么是低功耗、低功耗有哪几种以及不同模式之间的区别,最后还有一些程序截取、说明,资料不少,但是能让人一目了然理解的不太多,尤其是刚接触这个功能的新手,或许是资历尚浅,编程以及检索资料能力还有待提高。


再此,我抛砖引玉,发表一篇我的调试感受,我从  低功耗初体验、低功耗功能说明、低功耗总结三个方面进行说明。


首先,低功耗初体验。跟大家一样,查到STM32的低功耗有三个模式,分别是睡眠模式、停止模式以及待机模式(STM32开发指南——库函数版本321页)。



这里介绍的是停机模式,原因有以下亮点:功耗以及实用性。三个模式的功耗由高到低依次是睡眠、停机,最后是待机,既然待机功耗最低为什么选停机模式,这是由于待机模式与停机模式都可以RTC唤醒,但是停机模式可以通过任意管脚的外部中断唤醒,而待机模式只能通过NRST因脚伤的外部复位唤醒,局限性太大。


第二部分,低功耗功能说明


 


/*RTC设置*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

PWR_WakeUpPinCmd(ENABLE);

PWR_BackupAccessCmd(ENABLE);

RTC_Configuration();

NVIC_Configuration();

//MCU进入停机模式

void MCU_EnterSTOPMode(void)

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

/* Allow access to BKP Domain */

  PWR_BackupAccessCmd(ENABLE);


RTC_WaitForLastTask();

    RTC_ClearFlag(RTC_FLAG_SEC);

RTC_WaitForLastTask();

    while(RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);

    RTC_SetAlarm(RTC_GetCounter()+ Stop_Time);

    //Stop_Time这个是唤醒时间,单位是秒,即Stop_Time秒后启动RTC唤醒

    RTC_WaitForLastTask();

RTC_ClearFlag(RTC_FLAG_RSF);

RTC_WaitForLastTask();

RTCAlarm_IT_Enable();

RTC_WaitForLastTask();


EXTIX_Init();

EXIT_Configuration();     

    STOP_PeripthAndClk(); 

    

    EXTI->PR = 0x00; 

 

    /* Request to enter STOP mode with regulator in low power mode*/

    PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);


CLI();//ÆÁ±ÎËùÓÐÖжÏ

    System_timer_1ms = 0;

SYSCLKConfig_STOP(); 

START_PeripthAndClk(); 


SEI(); 

}

最后,低功耗总结


低功耗想要做到自己满意的效果,需要程序与硬件配合,根据外部电路将引脚置成上拉或者下拉,减小不必要的电流损失;还有就是将开启的外设关闭,如果忘了关闭可能会对结果有较大影响(尤其是又添加功能的时候,记得初始化的时候加上并调试成功可以使用时,记得在进入低功耗关掉)。

关键字:STM32  低功耗模式  唤醒  RTC  中断 引用地址:STM32进入低功耗模式以及唤醒(RTC+中断)

上一篇:stm32f103 RTC周期性待机唤醒(一)
下一篇:STM32 RTC与待机模式

推荐阅读最新更新时间:2024-03-16 16:26

STM32 编译指令 #pragma pack 的配对使用
#pragma pack 可以用来指定数据结构的成员变量的内存对齐数值。 可选值为: 1、2、4、8、16。 使用 pack 指令要配对使用,以避免意外影响项目中其他源文件的结构成员的内存对齐。 如果影响了其他源文件的结构成员内存对齐,那么在你按照默认对齐来计算那些结构成员占用内存大小或者使用指针移动计算结构成员偏移位置的时候,就可能会出现意料之外的异常。 主要可能的异常是内存定位错误或非法内存访问,结果可能导致错误的定位或数值,极端的情况下可能导致程序崩溃。 下面的例子用来展示基本的配对使用方式。 1)#pragma pack(n)的配对使用 #pragma pack(1) //内存对齐设置为1个字节
[单片机]
STM32F10x外部中断EXTI
一、EXTI是什么? EXTI(External interrupt/event controller)外部中断事件控制器,在单片机中占有非常重要的地位。代码默认地从上向下执行,遇到条件或者其他语句,会按照指定的地方跳转。而在单片机执行代码的过程中,难免会有一些突发的情况需要处理,这样就会打断当前的代码,待处理完突发情况之后,程序会回到被打断的地方继续执行。 二、使用方法 1.功能框图及寄存器 20个线路可以被配置成软件中断/事件线。下面是产生软件中断的过程: ● 配置20个中断/事件线屏蔽位(EXTI_IMR, EXTI_EMR) ● 设置软件中断寄存器的请求位(EXTI_SWIER) 当配置好软件中断事件寄
[单片机]
STM32F10x外部<font color='red'>中断</font>EXTI
STM32的启动文件详解
启动文件简介 启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作: 1、初始化堆栈指针SP=_initial_sp 2、初始化PC 指针=Reset_Handler 3、初始化中断向量表 4、配置系统时钟 5、调用C 库函数_main 初始化用户堆栈,从而最终调用main 函数去到C 的世界 查找ARM 汇编指令 在讲解启动代码的时候,会涉及到ARM 的汇编指令和Cortex 内核的指令,剩下的ARM的汇编指令我们可以在MDK- Help- Uvision Help 中搜索到,以EQU 为例,检索如下: 图1 ARM 汇编指令索引 检索出来的结果会有很多,我们只需要看Assembler User G
[单片机]
<font color='red'>STM32</font>的启动文件详解
基于STM32的嵌入式以太网门禁系统设计
  引言   当前,有很多的企业是采用佩戴工作证来完成门禁管理,而且还是采用传统的人工方式完成,不仅容易被人混入,且没有记录,存在各种人为的失误。同时,市场上门禁系统存在传输距离受限制、性能不佳等问题。   随着嵌入式技术日新月异的发展,以及以太网技术的普及,使得基于以太网的嵌入式产品越来越多,发展也越来越快。本文研究的就是采用以太网传输数据和射频芯片识别智能卡相结合的门禁系统,相对于传统的门禁系统,以太网解决了传输距离上的问题。其次,采用了基于80C51内核的射频芯片PN532,使得性能更加稳定。其工作的基本原理是先将智能卡放在门禁系统上,系统读取数据并传送给主芯片STM32进行处理,主芯片处理后再通过以太网协议LwIP将数
[单片机]
基于<font color='red'>STM32</font>的嵌入式以太网门禁系统设计
STM32学习记录8:DMA
官方的例子:STM32F10x_StdPeriph_Lib_V3.1.2\Project\STM32F10x_StdPeriph_Examples\DMA\FLASH_RAM /* DMA1 channel6 configuration */ DMA_DeInit(DMA1_Channel6); //peripheral base address 外设地址是自己的一个定义 //例如#define SPI1_DR_Addr ( (u32)0x4001300C ) DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SRC_Const_Buffer; //memory base
[单片机]
<font color='red'>STM32</font>学习记录8:DMA
浅谈链表对stm32等芯片程序中的提升作用(C语言)
程序中经常面临这样的一个问题,需要创建一定数量的对象,但事前又不知道对象的具体个数,因此新手通常的做法都会为了能处理足够的对象信息,创建一个足够大的空间数组。这里举个简单的例子,某个应用要求管理学生信息,因此设置了这样的一个结构体(类似于面向对象语言里说的成员属性) typedef struct { int num; int age; char *name; }studentInfo; 在不引入链表的情况下,为了能管理尽可能多的学生信息,可能会这样创建这个结构体的实体: studentInfo student ; int studentCnt = 0; //记录已经管理的学生数量 这样的处理方法,理论上能实现需求
[单片机]
AVR USART(UART)接收中断程序
系统功能 使用AVR的USART进行自发自收(将发送引脚RXD短接到接收引脚TXD),发出数据:0,1,2。。。数据,能接收到自己发出的数据:0,1,2。。。使用LED作出简单指示! 硬件设计 AVR主控电路原理图 LED控制电路原理图 软件设计 下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解! //目标系统: 基于AVR单片机 //应用软件: ICC AVR /*01010101010101010101010101010101010101010101010101010101010101010101 ------------------------------------
[单片机]
AVR USART(UART)接收<font color='red'>中断</font>程序
基于TMS320F2812集中供电系统的串口通信设计
引言 集中供电系统是电量的自动计量及管理的发展趋势,它将促进电力系统的潜能得到最大限度的发挥。 本集中供电系统利用RS-485通信,网络应用计算机、通信技术等,以DSP为核心、将智能计量与通信控制单元有机结合起来。 TMS320F2812串行通信接口概述 TMS320F2812串行通信接口(SCI)是一个双线通信异步串行通信接口,为减少串口通信时CPU的开销,F2812的串口支持16级接收和发送FIFO。串行通信接口支持与CPU以及其他使用费归零格式的异步外设之间的异步串行数字通信,它的接收器和发送器都是双级缓冲器,有各自独立的控制位与中断位,都可以同时工作在全双工模式下,为保证数据的完整性,串行通信接口对接收的数据进行间
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved