2018-05Stm23L151C8t6低功耗模式RTC喚醒失敗的原因

問題描述:

  • stm32L151使用RTC喚醒來退出stop模式诈胜,RTC運行但不能喚醒
  • RTC喚醒成功后,進(jìn)入stop模式前后功耗未發(fā)生明顯變化蚁滋,即進(jìn)入stop模式的代碼執(zhí)行了宿接,但是沒有起作用。

環(huán)境

  • keil5辕录,庫Keil.STM32L1xx_DFP.1.2.0睦霎,stm32cubemax4.25,庫stm32cube FW_L1 V1.8.0,

1.RTC不能喚醒的問題

查看RTC標(biāo)志位發(fā)現(xiàn)有變化走诞,RTC依然在行走副女,中斷標(biāo)志出現(xiàn),但是不進(jìn)入中斷函數(shù)蚣旱。RTC不會因為復(fù)位而重置碑幅,而利用cube生成的RTC初始化代碼里面(MX_RTC_Init())函數(shù)先判斷后初始化,這里就出現(xiàn)了問題姻锁,在只復(fù)位的時候RTC的值不知道是多少枕赵,所以會直接跳過初始化。

下面是正確的初始化代碼:
/* RTC init function */
static void MX_RTC_Init(void)
{

  RTC_TimeTypeDef sTime;
  RTC_DateTypeDef sDate;

    /**Initialize RTC Only 
    */
  hrtc.Instance = RTC;

  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = 99;//根據(jù)自己需要設(shè)置
  hrtc.Init.SynchPrediv = 369;//根據(jù)自己需要設(shè)置
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
    
if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0) != 0x32F2){
    /**Initialize RTC and set the Time and Date 
    */
  sTime.Hours = 0x0;
  sTime.Minutes = 0x0;
  sTime.Seconds = 0x0;
  sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

  sDate.WeekDay = RTC_WEEKDAY_MONDAY;
  sDate.Month = RTC_MONTH_JANUARY;
  sDate.Date = 0x1;
  sDate.Year = 0x0;

  if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    

    HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR0,0x32F2);
  }

    /**Enable the WakeUp 
    */
  if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 0, RTC_WAKEUPCLOCK_CK_SPRE_17BITS) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

}

2.stop模式功耗下不去位隶,或者沒進(jìn)入

看下圖,進(jìn)入stop模式有條件开皿,NOTE里面提到如果沒有清那一堆東西就會忽略進(jìn)入stop模式的代碼而繼續(xù)正常運行

stopMode.png
辦法:

HAL_PWR_EnterSTOPMode()函數(shù)已經(jīng)實現(xiàn)了:

  • set SLEEPDEEP bit
  • clear PDDS bit in PWR_CR
  • configuring LPSDSR bit in PWR_CR
    所以還需要實現(xiàn)的有:
  • clear WUF bit in PWR_CSR
  • reset all EXTI Line pending bits (in EXTI pending register (EXTI_PR)), all peripherals interrupt pending bits, the RTC Alarm (Alarm A and Alarm B), RTC wakeup, RTC tamper, and RTC time-stamp flags

以下代碼根據(jù)自己情況設(shè)置

在HAL_PWR_EnterSTOPMode()函數(shù)中添加:
PWR->CSR = PWR->CSR & (~0x00000001);//清WUF位
EXTI->PR = 0x0FFFFFFF;//寫1清除
RTC->ISR = 0;//寫0清除
systick是系統(tǒng)時鐘涧黄,運行時會產(chǎn)生中斷篮昧,stop模式cpu不運行,且要求清所有中斷笋妥,所以關(guān)閉它
注意:The SysTick timer clock is not stopped during the Stop mode debug (DBG_STOP bit set). The counter keeps on being decremented and can generate interrupts if they are enabled.

所以接著上面的代碼在HAL_PWR_EnterSTOPMode()函數(shù)中添加

SysTick->CTRL  = 0;

由于關(guān)閉了進(jìn)入stop模式關(guān)閉了systick懊昨,所以退出stop模式時也重新運行systick。

在RTC回調(diào)喚醒函數(shù)中加入
SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末春宣,一起剝皮案震驚了整個濱河市酵颁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌月帝,老刑警劉巖躏惋,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嚷辅,居然都是意外死亡簿姨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門簸搞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扁位,“玉大人,你說我怎么就攤上這事趁俊∮虺穑” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵寺擂,是天一觀的道長暇务。 經(jīng)常有香客問我,道長沽讹,這世上最難降的妖魔是什么般卑? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮爽雄,結(jié)果婚禮上蝠检,老公的妹妹穿的比我還像新娘。我一直安慰自己挚瘟,他們只是感情好叹谁,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乘盖,像睡著了一般焰檩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上订框,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天析苫,我揣著相機與錄音,去河邊找鬼。 笑死衩侥,一個胖子當(dāng)著我的面吹牛国旷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茫死,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼跪但,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了峦萎?” 一聲冷哼從身側(cè)響起屡久,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爱榔,沒想到半個月后被环,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡搓蚪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年蛤售,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妒潭。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡悴能,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雳灾,到底是詐尸還是另有隱情漠酿,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布谎亩,位于F島的核電站炒嘲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匈庭。R本人自食惡果不足惜夫凸,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阱持。 院中可真熱鬧夭拌,春花似錦、人聲如沸衷咽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镶骗。三九已至桶现,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鼎姊,已是汗流浹背骡和。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工相赁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人即横。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓噪生,卻偏偏與公主長得像裆赵,于是被迫代替她去往敵國和親东囚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • stm32f103系列有3種低功耗模式: 睡眠模式 停止模式 待機模式 從上往下功耗越低战授。 1. 睡眠模式 在睡眠...
    guanjianhe閱讀 11,144評論 2 5
  • // com.adobe.flash.listen settings.gradle 定義項目包含那些模塊app.i...
    zeromemcpy閱讀 1,613評論 0 1
  • 計算機系統(tǒng)漫游 代碼從文本到可執(zhí)行文件的過程(c語言示例):預(yù)處理階段页藻,處理 #inlcude , #defin...
    willdimagine閱讀 3,581評論 0 5
  • 前言 本文主要圍繞如下問題進(jìn)行知識收集整理: 待機植兰、睡眠與休眠的區(qū)別份帐? Android開發(fā)者官網(wǎng)當(dāng)中提到“idle...
    GrayMonkey閱讀 12,635評論 4 23
  • 文案的重要性废境,我想不用多說。 咱們談?wù)勍卜保趺礃幼屇愕奈陌府a(chǎn)生更大的銷售力噩凹,幫你賺更多的錢。 換一句話說毡咏,如何去推廣...
    伍阿哥文案閱讀 448評論 0 0