STM學習筆記--獨立看門狗IWDG
(1)時鐘由獨立的RC振蕩器提供
本文引用地址:http://2s4d.com/article/201611/315985.htm(2)自由運行的遞減計數(shù)器
(3)看門狗被激活,則在計數(shù)器至0x000時產(chǎn)生復位
2:寄存器理解
(1)鍵寄存器(IWDG_KR)中寫入0XCCCC,開始啟動獨立看門狗,計數(shù)值由復位
(2)0XFFF遞減計數(shù),當計數(shù)器到末尾0X000時,產(chǎn)生一個復位信號。
(3)鍵寄存器(IWDG_KR)中寫入0XAAAA,IWDG_RLR中的值會重新加入到計數(shù)器。即是清狗。
IWDG_PR(8bits預分頻寄存器)和IWDG_RLR(12bits)具有寫保護功能,想修改這個寄存器,IWDG_KR寄存器寫入0X5555。
工作原理框圖
時鐘來源是LSI內(nèi)部RC振蕩40KHZ不穩(wěn)定30~60KHZ,對時鐘的穩(wěn)定性要求較低的場合。


12位IWDG_RLR重裝載數(shù)值0X000-0XFFF,若修改,必須等待IWDG_SR寄存器中的RVU為0。
3位PR[2:0]必須等待PVU為0時,才能修改IWDG_PR寄存器中的數(shù)值。
PVU即看門狗預分頻更新prescaler value update
RVU即看門狗重裝載值更新reload value update
寄存器如下:
程序如下:來自正點原子@ALIENTEK開發(fā)板
//初始化獨立看門狗
//prer:分頻數(shù):0~7(只有低3位有效!)
//分頻因子=4*2^prer.但最大值只能是256!
//rlr:重裝載寄存器值:低11位有效.
//時間計算(大概):Tout=((4*2^prer)*rlr)/40 (ms).
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG->KR=0X5555;//使能對IWDG->PR和IWDG->RLR的寫
IWDG->PR=prer;//設(shè)置分頻系數(shù)
IWDG->RLR=rlr;//從加載寄存器IWDG->RLR
IWDG->KR=0XAAAA;//reload將重裝載值放入計數(shù)器,從而避免從0XFFF開始
IWDG->KR=0XCCCC;//使能看門狗
}
//喂獨立看門狗
void IWDG_Feed(void)
{
IWDG->KR=0XAAAA;//reload
}
評論