嵌入式编程经验之延迟函数
通常有两种方法来实现延迟函数,第一种用for循环实现,另一方法就是用定时器实现。
for循环实现的延迟函数常用于不精确的延迟,大概的意思。
定时器方式延迟能够实现精确的延迟。
for循环实现延迟
void delay1ms(int time)
{
unsigned int i;
while(time--)
for(i=0; i<124; i++);//124不同的系统对应的值不同
}
定时器方式实现延迟
用一个timer当做系统时间,它通常都会被设定为每10ms中断一次,然后在里面加一个counter当做delay用的参数,例如在timer中断函式里放入(两种方式:递增式和递减式)。
递增式:
void time10ms_isr(void)
{
time10ms++;
}
void delay10ms(int time)
{
time10ms = 0;
while (time10ms < time);
}
递减式:
void time10ms_isr(void)
{
if(time10ms) time10ms--;
}
void delay10ms(int time)
{
time10ms = time;
while (time10ms);
}
延迟应用
int main()
{
delay10ms(100);//100个10ms相当于延迟1s
}