多任务操作系统中的延时操作应该注意的事项

发表于:2013-7-11 10:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:qinpanke    来源:51Testing软件测试网采编

  Linux等多任务操作系统中使用延时函数要特别注意以下几点:

  (1)应用层和内核层的延时函数是不能混用的。因为,内核层的延时函数在调用过程中是不会发生任务切换的延时是精确的,而应用层的延时函数在延时函数调用是会发生任务切换,延时是不精确的。

  (2)模拟时序的操作必须要在内核层完成,即函数执行的过程中不能够发生任务切换,因为切换会导致延时不精确。

  (3)在应用层的一个任务中多次频繁的调用延时函数会导致延时精度偏差非常的大。

  那么,如果我们想在应用层中实现模拟时序和一个任务中多次调用延时函数这类操作应该怎么办?

  (1)根据CPU的频率来计算一次加减法运算的时间来替代标准C语言提供的延时函数。

  (2)将任务的优先级提高到不能被中断的级别。

  下面贴出一段,我们使用PPC405EP在应用层做延时的函数:

/*f=25MHz 1us---n=2*/
/*PPC405EP 1us---n=10*/
void delayus(unsigned char n)
{
n = n*10;
while(--n)
;
}
/*f=25MHz 1ms---n=1*/
/*PPC405EP 1ms---n=1*/
void delayms(unsigned char n)
{
unsigned char i=0x64;
while(--n)
{
while(--i)
delayus(0x64);
}
}

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号