uc/os之延时函数简析

本文分析了uc/os-II操作系统中两个延时函数OSTimeDly和OSTimeDlyHMSM的区别。OSTimeDly用于任务延时并进行任务调度,确保CPU资源的公平分配。
摘要由CSDN通过智能技术生成

uc/os中OSTimeDly与OSTimeDlyHMSM的区别

在uc/os-II的系统中,规定,除了空闲任务之外的所有任务必须在任务中合适的位置调用系统提供的函数OSTimeDly();使当前任务的运行延时(暂停)一段时间并进行一次任务调度,以让出CPU的使用权。(嵌入式实时操作系统uc/os-II原理及应用(任哲))


OSTimeDly()源码:

void OSTimeDly(INT16U ticks) //以时钟节拍数为单位的延时函数
{
#if OS_CRITICAL_METHOD == 3 //控制中断选择
     OS_CPU_SR cpu_sr;
#endif
       if(ticks > 0)
		{
			OS_ENTER_CRITICAL();
			if((OSRdyTbl[OSTCBCur -> OSTCBY] &= ~OSTCBCur -> OSTCBBitX) == 0) 
			{
				OSRdyGrp &= ~OSTCBCur -> OSTCBBitY;
			}	
			OSTCBCur -> OSTCBDly = ticks;
			OS_EXIT_CRITICAL();
			OS_Sched();
		}
}




OSTimeDlyHMSM()主要源码:
ticks = (hours * 3600L + minutes * 60L + seconds) * OS_TICKS_PER_SEC
+ OS_TICKS_PER_SEC * (milli + 500L / OS_TICKS_PER_SEC) / 1000L;
loops = ticks / 65536L; //计算得商得倍数(多少
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值