本帖最后由 pofu007 于 2013-9-18 09:16 编辑
用如下函数进行延时。
void Delay_N_10ms(uint8_t n)
{
DelayCnt = n;
while(DelayCnt != 0);
}
设定定时器中断周期为10ms,在中断函数中做如下处理
if(DelayCnt != 0)
{
DelayCnt--;
}
那么调用 Delay_N_10ms(1)的时候,由于此时定时器的计数值不可确定(也就是调用的时候,定时器的中断函数有可能在0~10ms内发生),那么具体的延时时间应该0~10ms之间。原来没意识到这个问题,就当做延时10ms在用,也没发现问题,事实上,这个10ms的延时函数还是很精准的,想不明白原因啊。 |