STM32F4 獨(dú)立看門狗IWDG
為了提搞系統(tǒng)的可靠性,STM32F4系列MCU有一個(gè)獨(dú)立看門狗(IWDG)和一個(gè)窗口看門狗(WWDG)。今天做的實(shí)驗(yàn)是關(guān)于獨(dú)立看門狗的。
獨(dú)立看門狗使用的時(shí)鐘源是內(nèi)部低速振蕩器LSI。因?yàn)長SE可能沒接,HSE可能壞點(diǎn),HSE耗著的時(shí)候HSI卻觀點(diǎn)了。。。諸多原因,LSI是最好的獨(dú)立看門狗時(shí)鐘。
【IWDG主要特性】
1、獨(dú)立的向下計(jì)數(shù)器 2、內(nèi)部RC振蕩器作為時(shí)鐘源 3、當(dāng)計(jì)數(shù)器值減到0時(shí),復(fù)位MCU
【IWDG配置步驟】
1、設(shè)置KR寄存器,為向PR和RLR寫入數(shù)據(jù)做準(zhǔn)備。向KR寫入0x5555使能寫入PR和RLR
2、寫入預(yù)分頻值和重裝載值。預(yù)分頻是對(duì)LSI進(jìn)行分頻,重裝載值是每次重新計(jì)數(shù)的開始值。
3、向KR寫入0xAAAA,使能計(jì)數(shù)。
4、向KR寫入0x5555,重新開始計(jì)數(shù)。否則計(jì)數(shù)到0就會(huì)reset。
【代碼實(shí)現(xiàn)】
本實(shí)驗(yàn)依賴于前面的LED實(shí)驗(yàn)。實(shí)驗(yàn)第一步的現(xiàn)象是LED反復(fù)閃爍。第二步現(xiàn)象是LED亮一下后熄滅。
第一部分:
int main()
{
NVIC_Config();
LED_Init();
LEDOn(LED1);
delay_ms(500);
LEDOff(LED1);
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//使能寫入PR和RLR
IWDG_SetPrescaler(IWDG_Prescaler_128); //寫入PR預(yù)分頻值
IWDG_SetReload(100); //寫入RLR
IWDG_Enable();//KR寫入0xCCCC
while(1)
{
IWDG_ReloadCounter(); //KR寫入0x5555 重新開始計(jì)數(shù),不讓復(fù)位
}
}
在這次實(shí)驗(yàn)中我們看到LED亮一下就保持常暗。說明MCU沒有被復(fù)位。
第二部分,我們不重裝RLR計(jì)數(shù)器,看看呢個(gè)不能復(fù)位mcu
int main()
{
NVIC_Config();
LED_Init();
LEDOn(LED1);
delay_ms(500);
LEDOff(LED1);
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//使能寫入PR和RLR
IWDG_SetPrescaler(IWDG_Prescaler_32); //寫入PR預(yù)分頻值
IWDG_SetReload(100); //寫入RLR
IWDG_Enable();//KR寫入0xCCCC
while(1)
{
//等待mcu被IWDG復(fù)位
}
}
這次可以看到LED在閃爍了。