每个项目都会有看门狗的,都比较熟悉,加上只有一个寄存器。
image.png
//watch.c
void init_watch_dog(void)
{
WDCTL = 0x00;//打开IDLE才能设置看门狗
WDCTL |= 0x08;//看门狗模式,定时器间隔选择1S间隔
}
void free_watch_dog(void)
{
WDCTL = 0xa0;
WDCTL = 0x50;
}
//main.c
void main(void)
{
led_init();
LED1=1;
LED2=1;
LED3=1;
delay_ms(1000);
LED2=0;
LED3=0;
init_watch_dog();
while(1)
{
LED1 = ~LED1;
delay_ms(500);
free_watch_dog();
}
}
实验现象:
设备开始运行的时候,红绿蓝灯会长亮1秒,然后LED1在不停闪烁;
当屏蔽free_watch_dog();函数时,设备会不断重启。
网友评论