STM32---IWDG獨立看門狗的使用 獨立看門狗(IWDG)由專用的40kHz的低速時鐘驅(qū)動, 即使主時鐘發(fā)生故障它也仍然有效。 窗口看門狗由從APB1時鐘分頻后得到的時鐘驅(qū)動, 通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操作。 IWDG最適合應用于那些需要看門狗作為一個在主程序之外, 能夠完全獨立工作,并且對時間精度要求較低的場合。 WWDG最適合那些要求看門狗在精確計時窗口起作用的應用程序。 IWDG主要性能 ●自由運行的遞減計數(shù)器 ●時鐘由獨立的RC振蕩器提供(可在停止和待機模式下工作) ●看門狗被激活后,則在計數(shù)器計數(shù)至0x000時產(chǎn)生復位 在鍵寄存器(IWDG_KR)中寫入0xCCCC,開始啟用獨立看門狗; 此時計數(shù)器開始從其復位值0xFFF遞減計數(shù)。 當計數(shù)器計數(shù)到末尾0x000時,會產(chǎn)生一個復位信號(IWDG_RESET)。 無論何時,只要鍵寄存器IWDG_KR中被寫入0xAAAA, IWDG_RLR中的值就會被重新加載到計數(shù)器中從而避免產(chǎn)生看門狗復位 。 如果用戶在選擇字節(jié)中啟用了“硬件看門狗“功能, 在系統(tǒng)上電復位后,看門狗會自動開始運行; 如果在計數(shù)器計數(shù)結(jié)束前,若軟件沒有向鍵寄存器寫入相應的值, 則系統(tǒng)會產(chǎn)生復位寄存器訪問保護 IWDG_PR和IWDG_RLR寄存器具有寫保護功能。 要修改這兩個寄存器的值,必須先向IWDG_KR寄存器中寫入0x5555。 以不同的值寫入這個寄存器將會打亂操作順序,寄存器將重新被保護。 重裝載操作(即寫入0xAAAA)也會啟動寫保護功能。 狀態(tài)寄存器指示預分頻值和遞減計數(shù)器是否正在被更新。 //啟動獨立看門狗 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //訪問之前要首先使能寄存器寫 IWDG_SetPrescaler(IWDG_Prescaler_64);//64分頻 一個周期1.6ms IWDG_SetReload(800);//最長12位 [0,4096] 800*1.6=1.28S /* Reload IWDG counter */ IWDG_ReloadCounter(); IWDG_Enable();// Enable IWDG (the LSI oscillator will be enabled by hardware) 因為獨立看門狗使用的是LSI,所以最好程序啟動的時候,使時鐘源穩(wěn)定: /* LSI的啟動*/ RCC_LSICmd(ENABLE);//打開LSI while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//等待直到LSI穩(wěn)定 擴展閱讀:51單片機看門狗電路 |
|