Other Parts Discussed in Thread: CC430F5137
您好!
我正在尝试使用 CC430F5137设置 WDT。 我在间隔模式和看门狗模式之间存在计时问题。 当我使用间隔模式并将 WDT 设置为1000ms 时。 它可以正常工作、并且每1000ms 发生一次 WDT 中断。代码如下:
WDTCTL = WDT_ADLY_1000; SFRIFG1 &=~WDTIFG; SFRIE1 |= WDTIE; P2OUT ^= BIT4; //使用异或 __bis_SR_register (LPM3_bits + GIE)切换 P1.0; //输入 LPM3,启用中断 __NO_OPERATION (); //对于调试 器} //看门狗计时器中断服务例程 #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__) #pragma vector = WDT_vector __interrupt void WDT_ISR (void) #Elif defined (__GDT__) void __attribute__(interrupt (interrupt (WDT_vector )#pruate (WDT_isr)#vector (void)#pru_isc!)错误! #endif { P2OUT ^= BIT4; //使用异或 }切换 P1.0
然后、当我将 WDT 模式更改为"看门狗模式"时。 每~3400 ms 进行一次复位。 代码如下:
WDTCTL = WDT_ARST_1000; SFRIFG1 &=~WDTIFG; SFRIE1 |= WDTIE; P2OUT ^= BIT4; //使用异或 __bis_SR_register (LPM3_bits + GIE)切换 P1.0; //输入 LPM3,启用中断 __NO_OPERATION (); //对于调试 器} //看门狗计时器中断服务例程 #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__) #pragma vector = WDT_vector __interrupt void WDT_ISR (void) #Elif defined (__GDT__) void __attribute__(interrupt (interrupt (WDT_vector )#pruate (WDT_isr)#vector (void)#pru_isc!)错误! #endif { P2OUT ^= BIT4; //使用异或 }切换 P1.0
。 我检查了32kHz 振荡器。 这是没有问题的。 您能帮我解决这个问题吗? 原因是什么?