STM32低功耗休眠設(shè)計(jì)精講
RTC代表的是實(shí)時(shí)時(shí)鐘的意思。因?yàn)樗峁┑臅r(shí)鐘基準(zhǔn)比較準(zhǔn)確所以用處還是很多的。本文章主要講解基于STM32F103上的RTC鬧鐘中斷功能以及用鬧鐘中斷喚醒STM32的待機(jī)模式。
這里主要說(shuō)一下,本人在調(diào)試STM32低功耗功能時(shí)遇到的問(wèn)題以及解決思路與大家分享一下。
在確認(rèn)使用低功耗功能后,大家鐵定會(huì)通過(guò)不同途徑查找相關(guān)的資料,了解到什么是低功耗、低功耗有哪幾種以及不同模式之間的區(qū)別,最后還有一些程序截取、說(shuō)明,資料不少,但是能讓人一目了然理解的不太多,尤其是剛接觸這個(gè)功能的新手,或許是資歷尚淺,編程以及檢索資料能力還有待提高。
再此,我拋磚引玉,發(fā)表一篇我的調(diào)試感受,我從 低功耗初體驗(yàn)、低功耗功能說(shuō)明、低功耗總結(jié)三個(gè)方面進(jìn)行說(shuō)明。
首先,低功耗初體驗(yàn)。跟大家一樣,查到STM32的低功耗有三個(gè)模式,分別是睡眠模式、停止模式以及待機(jī)模式(STM32開(kāi)發(fā)指南——庫(kù)函數(shù)版本321頁(yè))。
這里介紹的是停機(jī)模式,原因有以下亮點(diǎn):功耗以及實(shí)用性。三個(gè)模式的功耗由高到低依次是睡眠、停機(jī),最后是待機(jī),既然待機(jī)功耗最低為什么選停機(jī)模式,這是由于待機(jī)模式與停機(jī)模式都可以RTC喚醒,但是停機(jī)模式可以通過(guò)任意管腳的外部中斷喚醒,而待機(jī)模式只能通過(guò)NRST因腳傷的外部復(fù)位喚醒,局限性太大。
第二部分,低功耗功能說(shuō)明
/*RTC設(shè)置*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_WakeUpPinCmd(ENABLE);
PWR_BackupAccessCmd(ENABLE);
RTC_Configuration();
NVIC_Configuration();
//MCU進(jìn)入停機(jī)模式
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這個(gè)是喚醒時(shí)間,單位是秒,即Stop_Time秒后啟動(dòng)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();
}
最后,低功耗總結(jié)
低功耗想要做到自己滿(mǎn)意的效果,需要程序與硬件配合,根據(jù)外部電路將引腳置成上拉或者下拉,減小不必要的電流損失;還有就是將開(kāi)啟的外設(shè)關(guān)閉,如果忘了關(guān)閉可能會(huì)對(duì)結(jié)果有較大影響(尤其是又添加功能的時(shí)候,記得初始化的時(shí)候加上并調(diào)試成功可以使用時(shí),記得在進(jìn)入低功耗關(guān)掉)
此文獻(xiàn)給做單片機(jī)工作的同僚,希望大家在嵌入式硬件的道路上越走越遠(yuǎn),第一篇,望大家多多指導(dǎo),不喜勿噴!