ucosii(i)任务在何时切换

本文探讨了UCOSII操作系统中,没有延时函数的任务将连续执行,阻碍高优先级任务调度的问题。任务切换依赖于系统延时函数OSTimeDly(),该函数触发OS_Sched()进行任务查找和切换。为了确保任务调度,程序中必须包含调用OS_Sched()的逻辑,即使不使用延时,也需手动调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


问题发现:当有一个任务没有进入延时的时候,这个任务就会一直执行不会挂起。就算有高优先级的任务已经准备好了,得等低优先级的任务执行完,或处于就绪态的时候,才能响应高优先级的的任务。所以任务里必须要有ucos ii系统里的延时函数,否则,没有延时函数的某优先级的任务会一直执行(当然也可以没有延时函数,只是必须要出现任务调度的代码)。

那么问题来了,为什么必须要使用系统里的延时函数呢?原因其实很简单:系统延时函数(OSTimeDly())调用了OS_Sched()函数,而OS_Sched()函数是根据任务就绪表找到当前就绪态的最高优先级任务。因此,本质上说我们需要在

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值