嵌入式编程经验之延迟函数
2011-03-29 16:35
260 查看
嵌入式编程经验之延迟函数
通常有两种方法来实现延迟函数,第一种用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
}
通常有两种方法来实现延迟函数,第一种用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
}
相关文章推荐
- 嵌入式C编程经验 之 全局变量猛于虎
- 嵌入式编程 经验
- 嵌入式C编程经验 之 全局变量
- ARM嵌入式软件编程经验谈
- 嵌入式C编程经验 之 全局变量猛于虎
- 嵌入式系统及编程经验
- ARM嵌入式软件编程经验谈
- 嵌入式C编程经验 之 全局变量猛于虎
- ARM嵌入式软件编程经验谈
- 嵌入式C编程经验之全局变量猛于虎
- ARM嵌入式软件编程经验谈
- 嵌入式C编程经验 之 全局变量猛于虎
- ARM嵌入式软件编程经验谈
- JDBC编程经验谈
- C语言位运算的高级应用(尤其适合单片机和嵌入式编程)
- SQL Server存储过程编程经验技巧
- 全国嵌入式系统C语言编程大赛邀请您参加
- (SerialPort)串口编程知识整理:(三)串口编程的系统设计实用经验总结
- jsp编程经验总结
- 网页编程小经验-数据绑定dictionary