本实验与上一个实验都以看门狗为学习目标,在实验二十一学会初始化看门狗,同时也知道了看门狗的作用,本实验着重学习复位看门狗。复位看门狗后小灯不会闪烁。
void FeetDog(void) ;
函数原型:
1 void FeetDog(void) 2 { 3 WDCTL = 0xa0; 4 WDCTL = 0x50; 5 }
函数功能:复位看门狗,必须在看门狗时间间隔内调用本函数复位看门狗,否则系统会被强制复位。间隔之后再调用本函数无意义。
1 //main.c 2 3 # include <ioCC2430.h> 4 5 #define uint unsigned int 6 7 #define led1 P1_0 8 #define led2 P1_1 9 10 void Init_IO(void) 11 { 12 P1DIR = 0x03; 13 led1 = 1; 14 led2 = 1; 15 } 16 17 void Init_Watchdog(void) 18 { 19 WDCTL = 0x00; 20 //时间间隔一秒,看门狗模式 21 WDCTL |= 0x08; 22 //启动看门狗 23 } 24 25 void Init_Clock(void) 26 { 27 CLKCON = 0X00; 28 } 29 30 void FeetDog(void) 31 { 32 WDCTL = 0xa0; 33 WDCTL = 0x50; 34 } 35 36 void Delay(void) 37 { 38 uint n; 39 for(n=50000;n>0;n--); 40 for(n=50000;n>0;n--); 41 for(n=50000;n>0;n--); 42 for(n=50000;n>0;n--); 43 for(n=50000;n>0;n--); 44 for(n=50000;n>0;n--); 45 for(n=50000;n>0;n--); 46 } 47 48 void main(void) 49 { 50 Init_Clock(); 51 Init_IO(); 52 Init_Watchdog(); 53 54 led1=0; 55 Delay(); 56 led2=0; 57 while(1) 58 { 59 FeetDog(); 60 } //喂狗指令(加入后系统不复位,小灯不闪烁) 61 }