void init_timer ()
{
LPC_SC->PCONP |= 1<<23; //使能TIME3
}
void Tim3_delayMs( uint32_t delayInMs)
{
LPC_TIM3->TCR = 0x02; /* reset timer */
LPC_TIM3->PR = 0x00; /* set prescaler to zero */
LPC_TIM3->MR0 = delayInMs * (9600000 / 1000-1);
LPC_TIM3->IR = 0xff; /* reset all interrrupts */
LPC_TIM3->MCR = 0x04; /* stop timer on match */
LPC_TIM3->TCR = 0x01; /* start timer */
/* wait until delay time has elapsed */
while (LPC_TIM3->TCR & 0x01);
return;
}
通过调用函数void Tim3_delayMs() 来获得延时效果,问题是:只有在第一次调用的时候延迟有效果,而在第二次调用是无延迟效果。
想请教一下大家该怎么改。 |