STM32的看門(mén)狗配置
看門(mén)狗的配置有2部分:看門(mén)狗的初始化和喂狗。
下面看一下STM32是怎么初始化看門(mén)狗和喂狗的。
看門(mén)狗初始化步驟:
1.IWDG_PR和IWDG_RLR寄存器具有寫(xiě)保護(hù)功能。要修改這兩個(gè)寄存器的值,必須先向
IWDG_KR寄存器中寫(xiě)入0x5555。
2.設(shè)置預(yù)分頻因子 (Prescaler divider)PR[2:0] 。
3.設(shè)置看門(mén)狗計(jì)數(shù)器重裝載值。RLR[11:0]。
4.重新裝載看門(mén)狗的計(jì)數(shù)值,只要在鍵寄存器IWDG_KR中寫(xiě)入0xAAAA。
5.在鍵寄存器(IWDG_KR)中寫(xiě)入0xCCCC,開(kāi)始啟用獨(dú)立看門(mén)狗。
void Wdt_Init(void)
{
// Enable write access to IWDG_PR and IWDG_RLR registers
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //IWDG->KR = 0x5555
// IWDG counter clock: 40KHz(LSI) / 64 = 0.625 KHz
IWDG_SetPrescaler(IWDG_Prescaler_256); //IWDG->PR = 0x06;
// Set counter reload value to 1250
IWDG_SetReload(0xfff); //IWDG->RLR =0xFFF
Red IWDG counter
IWDG_ReloadCounter(); //IWDG->KR = 0xAAAA
/ Enable IWDG (the LSI oscillator will be enabled by hardware)
IWDG_Enable(); //IWDG->KR = 0xCCCC
}
//喂狗
void Kick_Dog(void)
{
//Reload IWDG counter
IWDG_ReloadCounter(); //IWDG->KR = 0xAAAA
}
上面這個(gè)看門(mén)狗有 /256 26214.4 ms。即2s多一點(diǎn)時(shí)間沒(méi)有喂狗就復(fù)位。
編輯:admin 最后修改時(shí)間:2018-05-18