stm32 窗口看门狗学习(二)
生活随笔
收集整理的這篇文章主要介紹了
stm32 窗口看门狗学习(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
窗口看門狗有一個提前喚醒中斷,如果開啟這個中斷,那么當計數器的值達到0x40的時候就會產生這個中斷。
上次的代碼加一點就可以做這個實驗了。
void WWDG_Init(u8 tr,u8 wr,u32 fprer) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG時鐘使能WWDG_SetPrescaler(fprer);//設置預分頻系數WWDG_SetWindowValue(wr);//設置窗口上限WWDG_Enable(tr); //設置計數器初值并且使能看門狗 WWDG_ClearFlag(); //清除提前喚醒中斷標志WWDG_NVIC_Init(); //看門狗NVIC初始化WWDG_EnableIT(); //開啟窗口看門狗中斷 } 最后三行是新加的。
void WWDG_NVIC_Init(void) {NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG中斷NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); }void WWDG_IRQHandler(void) {WWDG_SetCounter(0x7f); //在這里也可以喂狗,但是有的網友不建議這么做WWDG_ClearFlag(); //清除提前喚醒中斷標志}
為什么會設計這樣的中斷呢?
我認為這樣設計是為MCU復位之前留下一點時間,能夠讓程序員根據需要在復位之前保存一些重要的數據,這樣在復位后MCU可以知道復位原因,以使系統有更高的穩定性。
有的網友說“在窗口看門狗中斷函數中喂狗沒有什么意義,程序本來已經不按正常運行了,還在中斷函數中喂狗防止復位只會錯上加錯。”
總結
以上是生活随笔為你收集整理的stm32 窗口看门狗学习(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32 窗口看门狗学习(一)
- 下一篇: 面试题,产品经理岗位的哪些特点最吸引你?