历史上的今天
今天是:2025年03月29日(星期六)
2019年03月29日 | STM32进入低功耗模式以及唤醒(RTC+中断)
2019-03-29 来源:eefocus
在确认使用低功耗功能后,大家铁定会通过不同途径查找相关的资料,了解到什么是低功耗、低功耗有哪几种以及不同模式之间的区别,最后还有一些程序截取、说明,资料不少,但是能让人一目了然理解的不太多,尤其是刚接触这个功能的新手,或许是资历尚浅,编程以及检索资料能力还有待提高。
再此,我抛砖引玉,发表一篇我的调试感受,我从 低功耗初体验、低功耗功能说明、低功耗总结三个方面进行说明。
首先,低功耗初体验。跟大家一样,查到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();
}
最后,低功耗总结
低功耗想要做到自己满意的效果,需要程序与硬件配合,根据外部电路将引脚置成上拉或者下拉,减小不必要的电流损失;还有就是将开启的外设关闭,如果忘了关闭可能会对结果有较大影响(尤其是又添加功能的时候,记得初始化的时候加上并调试成功可以使用时,记得在进入低功耗关掉)。
史海拾趣
|
大家好,遇到点问题,有点困惑,想在这上面看看有没有同志遇到类似问题。 最近设计的两款射频通信板,采用的射频芯片是nRF2401和nRF24L01,但是设置此两个芯片的发射功率时,发现基本上没有什么效果,通信距离基本都保持比较远的距离,很难将距离 ...… 查看全部问答> |
|
无线传感器网络中用LEACH协议进行分簇后,簇内想采用局部的TDMA机制,这样的话,相邻的各个簇之间会产生干扰。目前考虑到了两种解决方法: 一种是采用采用直接序列扩频技术,即各个簇采用不 ...… 查看全部问答> |
|
请问M62X42B计时过快过快是什么问题,我读M62X42B的寄存器的值,变换很快,理论上应该是1s变化一次,而我写的程序基本上都是小时级别的递增?请问高手,一般出现这种情况都什么什么原因引起的。… 查看全部问答> |
|
有人会问这个简单,我看未必,有些心得我还是写出以免走弯路 这套开发板老好了, 大板是LM3S8962,且可以外接ULINK,JLINK调式. 小板是LM3S2110,且可以外接ULINK,JLINK调式 小板通过10针线跟大板连接,评估CAN总线时用 那 ...… 查看全部问答> |




