STM32F1笔记(七)WWDG窗口看门狗
生活随笔
收集整理的這篇文章主要介紹了
STM32F1笔记(七)WWDG窗口看门狗
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
窗口看門狗與獨立看門狗最大的不同是中斷,窗口看門狗擁有一個提前喚醒中斷。也就是在快要產生復位的前一段時間(T[6:0]=0x40)來提醒需要進行喂狗,否則將復位。因此當窗口看門狗的計數器值減到0x40的時候,產生中斷,在中斷里向WWDG_CR重新寫入計數器的值,即喂狗。
注意進入中斷后,必須在不大于1個窗口看門狗計數周期的時間內重新寫WWDG_CR,否則,看門狗將產生復位!
T[6:0]就是WWDG_CR的低七位,就是窗口看門狗的計數器。
W[6:0]是WWDG->CFR的低七位,是窗口看門狗的上窗口,下窗口值是固定的0x40。
低于下窗口值會產生復位。要注意當窗口看門狗的計數器在上窗口值之外被刷新也會產生復位。
?
最后要注意的是狀態寄存器WWDG_SR,需要通過軟件置0。
?
窗口看門狗配置示例
/*********************************************************** * tr:計數器值 * wr:窗口值 * fprer:分頻系數,僅最低2位有效 * Fwwdg = PCLK1/(4096 * 2^fprer) ***********************************************************/ void WWDG_Init(u8 tr,u8 wr,u32 fprer) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);WWDG_CNT = tr&WWDG_CNT;WWDG_SetPrescaler(fprer);WWDG_SetWindowValue(wr);WWDG_Enable(WWDG_CNT); WWDG_ClearFlag();WWDG_NVIC_Init();WWDG_EnableIT(); } void WWDG_NVIC_Init() {NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure); }?
喂狗相關中斷和代碼
void WWDG_Set_Counter(u8 cnt) {WWDG_Enable(cnt); }void WWDG_IRQHandler(void) {WWDG_SetCounter(WWDG_CNT);WWDG_ClearFlag(); }?
總結
以上是生活随笔為你收集整理的STM32F1笔记(七)WWDG窗口看门狗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车上能装华为帝瓦雷音响吗?
- 下一篇: 检查不孕不育去安阳哪家医院好