初级会员

- 积分
- 93
- 金钱
- 93
- 注册时间
- 2016-10-10
- 在线时间
- 20 小时
|
#include "wwdg.h"
#include "led.h"
#include "delay.h"
#include "exti.h"
u8 temp=0X7F;
void wwdg_init(u8 tr,u8 wr,u8 wdgtb) //tr是计数器值,wr是窗口值,wdgtb是分频数
{
RCC->APB1ENR|=1<<11; //使能窗口看门狗时钟
temp&=tr;
WWDG->CFR|=wdgtb<<7; // 分频设置
WWDG->CFR&=0XFF80; // 配置上窗口
WWDG->CFR|=(0X7F&wr);
WWDG->CR|=temp; //配置计数器
WWDG->CR|=1<<7; //使能看门狗
MY_NVIC_Init(2,3,WWDG_IRQn,2); //配置中断
WWDG->SR|=0X00; //清除提前唤醒中断标志位
WWDG->CFR|=1<<9; //使能中断
}
void wwdg_set_counter(u8 cnt) //重装计数器函数
{
WWDG->CR=(cnt&0X7F);
}
void WWDG_IRQHandler(void)
{
wwdg_set_counter(temp); // 喂狗
WWDG->SR|=0X00; //清除提前唤醒中断标志位
PC1=1; //LED1 灭
}
主函数:
int main()
{
Stm32_Clock_Init(9);
led_init();
delay_init(72);
PC0=1; //LED0 灭
PC1=0; // LED1 亮
wwdg_init(0X7F,0X4F,3);
while(1)
{
PC0=0; //LED0 亮
}
}
|
|