您好,
我目前使用的是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;
}
}