您好!
我正在尝试为我的大学项目执行有效的阻止延迟。 我现在的工作:
volatile int32_t 计数器;
void timers_init (void){
TA0CTL |= TASSEL_SMCLK | MC__UP;
TA0CCR0 = 16000; //SMCLK 为16MHz、因此我们通过这种方式计算每个中断的时间为1ms
}
void wait_ms (uint32_t delay){
计数器=延迟;
TA0CTL |= TACLR;
TA0CCTL0 |= CCIE;
_bis_SR_register (LPM0_bits + GIE);
while (计数器>0);
}
#pragma vector=TIMER0_A0_VECTOR
_interrupt void timer0_A0_ISR (void){
----柜台;
如果(counter ==0){
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);
TA0CCTL0 &=~(CCIE);
}
TA0CCTL0 &=~(TA0IV_TA0IFG);
}
是否有任何方法可以提高效率? 延迟的精度不是一个优先级、但我不想只通过"它在工作"来解决
感谢您的任何帮助!