void init(void)
{
clock_init();
buzzer_pin_init(); //ºÜ³³£¬Ïȹصô
lcd_pin_init();
fram_pin_init();
warn_light_pin_init();
voice_pin_init();
rotary_pin_init();
keyboard_pin_init();
ad_init();
ctrl_pin_init();
gprs_pin_init();
timerA0_init() ;
timerA1_init() ;
timerB_init() ;
rtos_init();
lcd_dis_init();
UART0_Init();
UART1_Init();
UART2_Init();
UART3_Init();
fram_init();
RTCCTL01&=~RTCHOLD; // enable RTC interrupt
//ADC12CTL0 |= ADC12SC; // Start sampling/conversion
__bis_SR_register(GIE); // enable interrupts
}
我在红字部分开的中断。我在定时器中喂狗(先不讨论这样喂合不合理的问题),我的意思是,
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer to prevent time out reset
init();
TA1R = 0;
WDTCTL=WDT_ARST_1000;
……
}
因为int()比较长,为了不让看门狗在我初始化的过程中重启,我先关看门狗,然后初始化完之后再开,问题就来了,我在int()中死机,怎么办?
而如果我把 WDTCTL=WDT_ARST_1000; 放到int前面, int()超过1秒,又会造成重启,在int()中把定时器初始化靠前,定时器初始化完之后,就可以喂狗了,但是 开中断__bis_SR_register(GIE); 又是在int()最后。请问使能定时器后,没有这句:__bis_SR_register(GIE) 定时器工作了吗?
我的喂狗如何放更好的看管整个程序过程? |