×
单片机 > 单片机程序设计 > 详情

串口看门狗实验

发布时间:2020-08-26 发布时间:
|

//   独立看门狗没有中断,WWDG有

//   IWDG有时钟(LSI),wwdg需要挂载(PCK1:APB1)


//  IWDG是12位递减的。WWDG是7位递减的

//  IWDG只有下限,WWDG有下限和上限

//  IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序



#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灯常亮,当熄灭时,表示MCU复位,说明没有喂狗。  DS0当喂狗时闪烁
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){  // 分别为计算计数器初值、看门狗窗口值(上限:自己设定,下限0x40)、分频数
NVIC_InitTypeDef NVIC_InitStruct;

WWDG_CNT=tr&WWDG_CNT;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);       // wwdg挂载的时钟,iwdg有自己的时钟,不需要挂载

WWDG_SetWindowValue(wval);
WWDG_SetPrescaler(pre);
WWDG_Enable(WWDG_CNT);// 开启看门狗:设置了计数器初值,并且使能了看门狗

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);     //中断处理函数,中间出现喂狗,DS0就会闪一下
delay();
delay();
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_9);
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项