STM32F1笔记(六)独立看门狗IWDG
STM32F1內(nèi)置了兩個(gè)看門狗,獨(dú)立看門狗IWDG和窗口看門狗WWDG,可以用來檢測(cè)和解決由軟件錯(cuò)誤引起的故障。
IWDG最適合應(yīng)用于那些需要看門狗作為一個(gè)在主程序之外,能夠完全獨(dú)立工作,并且對(duì)時(shí)間精度要求較低的場(chǎng)合。WWDG最適合那些要求看門狗在精確計(jì)時(shí)窗口起作用的應(yīng)用程序。
STM32的獨(dú)立看門狗由內(nèi)部專門的40Khz低速時(shí)鐘(LSI)驅(qū)動(dòng),即使主時(shí)鐘發(fā)生故障,它也仍然有效。這里需要注意獨(dú)立看門狗的時(shí)鐘是一個(gè)內(nèi)部RC時(shí)鐘,而不是準(zhǔn)確的40Khz,而是30~60Khz之間的一個(gè)可變化的時(shí)鐘,只是估算的時(shí)候以40Khz的頻率來計(jì)算,看門狗對(duì)時(shí)間的要求不是很精確,所以時(shí)鐘有些偏差是可以接受的。
?
獨(dú)立看門狗的配置如下:
void IWDG_Init(u8 prer,u16 rlr) { //取消IWDG_PR和IWDG_RLR的寫保護(hù)IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//預(yù)分頻IWDG_SetPrescaler(prer);//重裝載IWDG_SetReload(rlr);//重載計(jì)數(shù)值即喂狗IWDG_ReloadCounter();IWDG_Enable(); }這里需要注意的是,不需要使能時(shí)鐘。
其中喂狗時(shí)間計(jì)算方式為:Tout = ((4*2^prer) * rlr)/40
prer取值范圍為0~7
當(dāng)prer值為4,rlr值為625時(shí),Tout=1000ms,這樣只要在1s之內(nèi)喂狗就不會(huì)發(fā)生看門狗復(fù)位。
需要注意的是,由于看門狗的時(shí)鐘不精確,所以最后不要太晚也就是太靠近1s的時(shí)間喂狗,需要提前一些。
?
喂狗函數(shù):
void IWDG_Feed(void) { IWDG_ReloadCounter(); }?
總結(jié)
以上是生活随笔為你收集整理的STM32F1笔记(六)独立看门狗IWDG的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: STM32F1笔记(五)外部中断EXTI
- 下一篇: 车上能装华为帝瓦雷音响吗?
