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