STM32F1笔记(七)WWDG窗口看门狗
窗口看門(mén)狗與獨(dú)立看門(mén)狗最大的不同是中斷,窗口看門(mén)狗擁有一個(gè)提前喚醒中斷。也就是在快要產(chǎn)生復(fù)位的前一段時(shí)間(T[6:0]=0x40)來(lái)提醒需要進(jìn)行喂狗,否則將復(fù)位。因此當(dāng)窗口看門(mén)狗的計(jì)數(shù)器值減到0x40的時(shí)候,產(chǎn)生中斷,在中斷里向WWDG_CR重新寫(xiě)入計(jì)數(shù)器的值,即喂狗。
注意進(jìn)入中斷后,必須在不大于1個(gè)窗口看門(mén)狗計(jì)數(shù)周期的時(shí)間內(nèi)重新寫(xiě)WWDG_CR,否則,看門(mén)狗將產(chǎn)生復(fù)位!
T[6:0]就是WWDG_CR的低七位,就是窗口看門(mén)狗的計(jì)數(shù)器。
W[6:0]是WWDG->CFR的低七位,是窗口看門(mén)狗的上窗口,下窗口值是固定的0x40。
低于下窗口值會(huì)產(chǎn)生復(fù)位。要注意當(dāng)窗口看門(mén)狗的計(jì)數(shù)器在上窗口值之外被刷新也會(huì)產(chǎn)生復(fù)位。
?
最后要注意的是狀態(tài)寄存器WWDG_SR,需要通過(guò)軟件置0。
?
窗口看門(mén)狗配置示例
/*********************************************************** * tr:計(jì)數(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窗口看门狗的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 车上能装华为帝瓦雷音响吗?
- 下一篇: 检查不孕不育去安阳哪家医院好