STM8L052低功耗模式


Stm8L系列單片機的低功耗有五種模式:
§ wait模式
§ Lowpower run模式
§ Lowpower wait模式
§ Active-haltwith full RTC模式
§ Halt模式
最低功耗的就是就是halt模式。這里也主要總結一下如何進入halt模式,進入以后可以通過什么方式喚醒,以及有很多客戶會關心的如何自動喚醒。
Halt模式進入很簡單,執行一條halt指令,調用庫函數也就是 halt()就行了。但是進入前要注意把所有的中斷掛起標志給清除掉。要是不清零又恰巧有中斷標志的時候進入該模式也會被立馬喚醒。進入這種模式,所有的外設全都關閉了,所有時鍾關閉。這時候它自己是醒不過來的,只能靠掐人中(給個外部中斷)或者重新復活(重啟復位)。當然這個在進入halt之前是要把中斷引腳什么的該配置的給配置好了。
那現在有個問題就是在halt模式下只能通過外部中斷和復位了,我需要它自動醒過來怎么辦?那就在進入的時候定個鬧鈴了(打開rtc),到點了就要醒過來。既然開了鬧鈴了它也就不是純halt模式了。這時候也就叫做active-halt模式。Active-halt模式下可以打開個rtc和lcd。這里要說明一下,在stm8s和stm8l101xx系列里面有AWU自動喚醒寄存器。這一系列里面卻沒有,它就是靠RTC來實現自動喚醒功能的。那現在就做個最簡單的例程看看是如何使用rtc自動喚醒功能的:
第一步:選擇RTC時鍾源(使用lse或者lsi)                         CLK_RTCClockConfig(CLK_RTCCLKSource_LSI,CLK_RTCCLKDiv_1);
第二步:使能RTC的時鍾                                                    CLK_PeripheralClockConfig(CLK_Peripheral_RTC,ENABLE);
第三步:選擇RTC喚醒時鍾源                                            RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);
第四步:RTC喚醒計數中斷使能                                         RTC_ITConfig(RTC_IT_WUT,ENABLE);
第五步:使能所有中斷                                                     enableInterrupts();
以上是初始化進行配置的部分。而每次要進入halt模式的時候我們還需要執行以下的步驟:        
第一步:設置喚醒的時間:                                               RTC_SetWakeUpCounter(5);
第二步:RTC喚醒使能:                                                  RTC_WakeUpCmd(ENABLE);

第三步:執行halt指令:                                                   halt();  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM