STM323中低功耗模式

发布者:trendsetter9最新更新时间:2018-12-26 来源: eefocus关键字:STM323  低功耗模式 手机看文章 扫描二维码
随时随地手机看文章

STM32进入低功耗模式 备份SRAM和RTC模块都可以保持正常工作状态。

1 睡眠模式 sleep:

进入睡眠状态前采取以下措施:除保留将要唤醒Cortx内核的时钟之外,关闭所有外设时钟,并开启内部HSI(可设置为1MHz)后,STM32睡眠消耗电流大概0.5mA左右。

2.停机模式 close down:

停机模式设置完成后,CPU遇到WFI或WFE指令就会停止工作,HSI和HSE进入关闭状态。但Flash和SRAM仍然保持电源供应,此时STM32所有工作状态仍然保留着.和睡眠模式一样,停机模式也可以通过外设中断唤醒.在停机模式下除了外部中断控制单元,所有设备的时钟都被禁止了,只能通过在GPIO引脚上产生电平边沿触发外部中断控制方式将STM32从停机状态下唤醒. 外部中断通道除了与GPIO连接,还和RTC时钟报警事件连接,因此可以使用RTC模块实现定时将STM32从停机状态中唤醒.STM32进入停机模式,其电流消耗降至24uA左右.在停机模式基础上,STM32还可以通过内部电压调整器调整内核工作电压可以达到更低的功耗,通过设置STM32 PCR中的LPDS位可以使STM32内核也进入低功耗模式.这样整体电流可下降到14uA,如果开启RTC,需要多消耗1.4uA电流.

STM32在使用HSI振荡器从停机模式恢复所需唤醒时间

恢复时间/us 恢复后的 备注

3.52 返回正常模式 从停机模式恢复到返回正常模式

5.42 返回正常模式+WFI指令 从停机模式恢复到正常模式,并执行WFI模式

5.32 返回低功耗模式+WFE指令 从停机模式恢复后返回低功耗模式,并执行WFE指令

7.21 返回低功耗模式+WFI指令 从停机模式恢复后返回低功耗模式,并执行WFI指令

3.待机模式 standby:

将Cortex_PCR中的SLEEP位置位,再将STM32_PCR的PDDS位置位后,STM32的待机模式就设置好了。待机模式下STM32处于完全


关闭状态:

内核电源、HSE、HSI都处于关闭状态。

和停机模式一样,可以通过RTC报警事件来将STM32从待机模式中唤醒,也可使用外部复位引脚,或通过独立看门狗产生的复位

信号将其唤醒,还可通过在GPIOA.0引脚产生一个上升沿来唤醒STM32,但前题是该引脚必须事先设置为唤醒(Wake Up Pin)引脚功能.

待机模式作为最低功耗模式,退出时间长达50us.进入待机模式,所有的SRAM数据,Cortex_M3处理器的寄存器和STM32的寄存器内容将全部丢失. 即从待机模式唤醒后,相当于得到一个硬件复位的效果.

STM32待机模式下的电流消耗情况

STM32运行情况 VDD/VBAT3.3V VDD/VBAT-2.4V

HSI LSI 看门狗和RTC关闭 2uA N/A

LSI和RTC开启 1.4uA 1.08uA


按键调试的方法唤醒待机模式的系统

KEY WKUP PRINTF LED LCD

KEY:按键扫描

RTC闹钟中断唤醒待机模式的系统用到RTCAlarm_IRQHandler() 和RTC_IRQHandler() 使用时 RTCAlarm_IRQHandler()函数的优先级一定要高于RTC_IRQHandler()

原因如下:

1,产生闹钟中断的前一瞬间,一定产生了秒中断,那么会先执行RTC_IRQHandler() 中断函数, 在RTC_IRQHandler() 执行的过程中,闹钟中断标志又被挂起,由于RTC_IRQHandler()是全局中断函数,必须清除所有的中断标志,程序才能退出该函数, 假如RTC_IRQHandler()  和RTCAlarm_IRQHandler() 是同样的优先级,要想让程序退出RTC_IRQHandler() 函数,那么你必须清除闹钟中断标志(如果不清除闹钟中断标志,程序会死在RTC_IRQHandler() ), 这样问题又出现了,清除闹钟中断标志后,程序就不会进入RTCAlarm_IRQHandler(),那么RTCAlarm_IRQHandler()函数永远也不会被执行。


只有这样做设置闹钟中断函数RTCAlarm_IRQHandler() 的优先级高于全局中断函数RTC_IRQHandler(),在执行全局中断函数RTC_IRQHandler() 的时候,如果产生闹钟中断,那么中断嵌套去执行RTCAlarm_IRQHandler(),执行完毕RTCAlarm_IRQHandler()后,再去执行RTC_IRQHandler() 。

对应程序:


static void RTC_NVIC_Config(void)

  NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; //RTC全局中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //先占优先级2位,从优先级2位
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //先占优先级3位,从优先级4位
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能该通道中断
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;  //闹钟中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //比RTC全局中断的优先级高
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
NVIC_Init(&NVIC_InitStructure);

}


//RTC时钟中断
//每秒触发一次  
//extern u16 tcnt; 
void RTC_IRQHandler(void)
{  
if (RTC_GetITStatus(RTC_IT_SEC) != RESET)//秒钟中断

RTC_Get();//更新时间   
  }
   
RTC_ClearITPendingBit(RTC_IT_SEC); //清秒中断
//RTC_WaitForLastTask();          
}




static void RTC_Alarm_EXIT(void)

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_ClearITPendingBit(EXTI_Line17);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Line = EXTI_Line17;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);


}


void RTCAlarm_IRQHandler(void)
{     
if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
      {


      }
EXTI_ClearITPendingBit(EXTI_Line17);
//RTC_WaitForLastTask();
RTC_ClearITPendingBit(RTC_IT_ALR);
//RTC_WaitForLastTask();
 }

关键字:STM323  低功耗模式 引用地址:STM323中低功耗模式

上一篇:STM32 SPI方式读写SD卡
下一篇:STM32—RCC时钟

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

STM32的3种低功耗模式
睡眠模式:内核停止,外设如NVIC,系统时钟Systick仍运行。 停止模式:所有时钟都已停止;1.8V内核电源工作;PLL,HIS和HSERC振荡器功能禁止;寄存器和SRAM内容保留。 待机模式:1.8V内核电源关闭;只有备份寄存器和待机电路维持供电;寄存器和SRAM内容全部丢失;实现最低功耗。 STM32的3种低功耗唤醒方式: STM32待机模式: 在待机模式下,所有的I/O引脚均处于高阻态,除了复位引脚、被使能的唤醒引脚和TAMPER引脚。待机模式下只有2uA的电流,停机模式下20uA的电流。 库函数进入待机模式: 1. 使能电源时钟。 2. 设置WK_UP引脚作为唤醒源。 3. 设置SLEEPDEEP位
[单片机]
低功耗研发-STM32L151C8T6芯片(二)低功耗模式
默认情况下,系统复位后,控制器运行在RUN模式,在RUN模式下,CPU的时钟是由HCLK提供,如果CPU不需要一直保持运行 状态,是可以设置控制器为其他几种低功耗模式,比如,当控制器需要等待一个 外部中断事件时。这取决于用户选择合适的工作模式。 该芯片具有5中低功耗模式: ① 低功耗运行模式:低功耗运行模式:适配器处于低电压模式,时钟频率限制在低频,部分外围的使用也受限。 ② 睡眠模式:Cortex-M3内核停止,外围器件保持运行状态,比如RTC一直运行。 ③ 低功耗睡眠模式:Cortex-M3内核停止,时钟频率受限(降频),部分外围运行,电源适配器处于低功耗模式,RAM断电,Flash停止。
[单片机]
超<font color='red'>低功耗</font>研发-STM32L151C8T6芯片(二)<font color='red'>低功耗</font><font color='red'>模式</font>
N76E003 低功耗(掉电模式&定时唤醒)
#include N76E003.h #include Common.h #include Delay.h #include SFR_Macro.h #include Function_define.h #define uint unsigned int #define uchar unsigned char uint WKTCount=0; bit WKTFlag=0; sbit LED=P0^4; sbit TS1=P0^3; void main (void) { Set_All_GPIO_Quasi_Mode; WKCON=0x03;//预分频64 RWK =255-153;/
[单片机]
N76E003 <font color='red'>低功耗</font>(掉电<font color='red'>模式</font>&定时唤醒)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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