// 獨(dú)立看門狗沒有中斷,WWDG有
// IWDG有時(shí)鐘(LSI),wwdg需要掛載(PCK1:APB1)
// IWDG是12位遞減的。WWDG是7位遞減的
// IWDG只有下限,WWDG有下限和上限
// IWDG最適合應(yīng)用于那些需要看門狗作為一個(gè)在主程序之外,能夠完全獨(dú)立工作,并且對(duì)時(shí)間精度要求較低的場(chǎng)合。 WWDG最適合那些要求看門狗在精確計(jì)時(shí)窗口起作用的應(yīng)用程序
#include “stm32f4xx.h”
void delay(void);
void led_init(void);
void wwdg_init(u8 tr,u8 wval,u32 pre);
void WWDG_IRQHandler(void);
u8 WWDG_CNT=0X7F;
int main(){
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
led_init();
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
delay();
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_10);
wwdg_init(0x7f,0x5f,WWDG_Prescaler_8);
while(1){
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
}
}
void delay(void){
int i,j;
for(i=0;i《100000;i++)
for(j=0;j《1000;j++)
{}
}
void led_init(void){ // 保持DS1燈常亮,當(dāng)熄滅時(shí),表示MCU復(fù)位,說明沒有喂狗。 DS0當(dāng)喂狗時(shí)閃爍
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed=GPIO_Fast_Speed;
GPIO_Init( GPIOF, &GPIO_InitStruct);
GPIO_SetBits(GPIOF,GPIO_Pin_10|GPIO_Pin_9);
}
void wwdg_init(u8 tr,u8 wval,u32 pre){ // 分別為計(jì)算計(jì)數(shù)器初值、看門狗窗口值(上限:自己設(shè)定,下限0x40)、分頻數(shù)
NVIC_InitTypeDef NVIC_InitStruct;
WWDG_CNT=tr&WWDG_CNT;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE); // wwdg掛載的時(shí)鐘,iwdg有自己的時(shí)鐘,不需要掛載
WWDG_SetWindowValue(wval);
WWDG_SetPrescaler(pre);
WWDG_Enable(WWDG_CNT);// 開啟看門狗:設(shè)置了計(jì)數(shù)器初值,并且使能了看門狗
NVIC_InitStruct.NVIC_IRQChannel=WWDG_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0x02;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0x02;
NVIC_Init(& NVIC_InitStruct);
WWDG_ClearFlag();
WWDG_EnableIT();// 開啟提前喚醒中斷
}
void WWDG_IRQHandler(void){
WWDG_SetCounter(WWDG_CNT);
WWDG_ClearFlag();
GPIO_ResetBits(GPIOF,GPIO_Pin_9); //中斷處理函數(shù),中間出現(xiàn)喂狗,DS0就會(huì)閃一下
delay();
delay();
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_9);
}
-
看門狗
+關(guān)注
關(guān)注
10文章
577瀏覽量
71475
發(fā)布評(píng)論請(qǐng)先 登錄
STM32中的獨(dú)立看門狗和窗口看門狗是什么

什么是看門狗電路
stm32看門狗時(shí)間計(jì)算 獨(dú)立看門狗和窗口看門狗的特性是什么
什么是stm32看門狗?獨(dú)立看門狗和窗口看門狗工作原理解析

STM32看門狗配置(獨(dú)立看門狗IWDG和窗口看門狗WWDG)

MCU獨(dú)立看門狗與窗口看門狗的區(qū)別

【嵌入式系統(tǒng)】獨(dú)立看門狗原理+看門狗實(shí)驗(yàn)分析

STM32:獨(dú)立看門狗、窗口看門狗的配置

STM32中的獨(dú)立看門狗和窗口看門狗
詳解獨(dú)立看門狗的實(shí)現(xiàn)原理
STM32中的獨(dú)立看門狗和窗口看門狗

評(píng)論