您好,
我目前使用的是MSP430F4784控制器。
在这种情况下,我要设置N个延迟数(仅限最大10秒延迟)。
我能够实现我想要的延迟,但在程序运行时,执行过程在delayMS函数循环中保持特别,我在下面介绍了这一点。
但这种情况会突然发生,并会连续发生3到4次。这可能是什么原因造成的。
请帮我解决这个问题。
volatile unsigned int k=0; volatile unsigned int h=0; volatile unsigned int l=0; void tim(void) { TACTL |= MC_0; TACTL |= TACLR; TACTL = TASSEL_1 + ID_0; // SMCLK, continuous mode TA0CCTL0 = CCIE; TA0CCR0 = 32768; } void delayMS(int x) { TACTL |= MC_2; k=0; h= x; while(!l); l=0; TACTL |= MC_0; } int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer P9DIR |= BIT5; tim(); while(1) { P9OUT ^= BIT5; delayMS(2); } } #pragma vector = TIMER0_A0_VECTOR __interrupt void Timer_A0( void ) { TA0CCTL0 &= ~CCIFG; k++; if(k == h) { k=0; l=1; } }