STM32 待機模式與看門狗和諧相處

由於在standby mode,看門狗仍然能繼續工作,但是其他時鐘都關閉了,沒法喂狗,這樣會導致mcu不停復位。網上找的方法如下:1. 開啓RTC,定期喂狗後再次睡眠。該方法視乎可行,但是不夠省電。

        2,使用復位標誌,區分上電覆位和看門狗復位。

if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)

但是實際測試有問題,STM32無法區分上電覆位和看門狗復位。

 

爲此借鑑了其他方法總結了如下結果:

1. MCU 正常啓動後,在進入省電模式的函數那裏把省電內容替換位系統復位。

2. 在省電模式(即系統復位)後,mcu會重啓,初始化IO口讀取存儲在EEPROM的省電標誌位,如果位1,直接開啓看門狗並運行系統,如果爲0,則進入休眠函數。爲什麼這種方法可行,是因爲在進入休眠模式之前看門狗還沒有啓用,所有就不存在喂狗問題。

此外如果是上電立馬開機,則不用判斷標誌位,且發生看門狗復位也能開機。如果是需要按鍵開機,則需要判斷省電標誌位, 如果是看門狗復位也需要判斷標誌位, 以此判斷是否開機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章