📄 watchdog.c
字号:
/*
符号常量值含意
WDTO_15MS Watchdog 定时器15 毫秒超时
WDTO_30MS Watchdog 定时器30 毫秒超时
WDTO_60MS Watchdog 定时器60 毫秒超时
WDTO_120MS Watchdog 定时器120 毫秒超时
WDTO_250MS Watchdog 定时器250 毫秒超时
WDTO_500MS Watchdog 定时器500 毫秒超时
WDTO_1S Watchdog 定时器1 秒超时
WDTO_2S Watchdog 定时器2 秒超时
*/
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/delay.h>
#define uchar unsigned char
#define uint unsigned int
#define CLR_LED PORTB|=0X01 //PD4 接发光管
#define SET_LED PORTB&=0XFE
//误差不会太大的延时1ms 函数
//===============================
void delay_1ms(void) //1ms延时函数
{
unsigned int i=12000;
while(i) --i;
}
//===============================
void delay_nms(unsigned int n) //N ms延时函数
{
while(n)
{
--n;
delay_1ms();
}
}
//===============================
int main(void)
{
DDRB=0XFF;
PORTB=0X01; //SET_LED
wdt_enable(WDTO_1S); //喂狗时长设定
wdt_reset(); //喂狗
delay_nms(500);
SET_LED;
delay_nms(50000); //等待WDT复位,(在这个长定时里没喂狗会导致AVR超时复位)
while(1)
wdt_reset(); //喂狗,此句不要亦可
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -