ucos 在stm32上,任务切换问题
答案:1 悬赏:40 手机版
解决时间 2021-03-28 20:20
- 提问者网友:十年饮冰
- 2021-03-27 23:54
ucos 在stm32上,任务切换问题
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-03-28 00:20
细看,两个任务,操作的是同一个端口资源,任务的调度并不是按想像的那样:task_1执行500ms后,再执行task_2 500ms,均匀地交替执行。 如果要实现对PB0的端口输出近1:1的方波,应该要把它放在同一个任务中操作。
举例:(系统运行时间为概数,方便说明)
系统运行0ms: task_1(优先级高) 先执行,PB0 输出高电平;紧接着暂停500ms。
系统运行1ms: task_1 被挂起,系统内核调度下一任务,这时task_2 被唤醒并执行,PB0拉低(这样PB0实际上只置高了1ms)。紧接着暂停500ms。
系统运行500ms: task_1 的500ms延时结束,重新唤醒并执行PB0置高(低电平时间持续了499ms);
...
1ms的高电平时间:499的低电平时间,所以会出现高电平短、低电平持续时间很长的现象。
举例:(系统运行时间为概数,方便说明)
系统运行0ms: task_1(优先级高) 先执行,PB0 输出高电平;紧接着暂停500ms。
系统运行1ms: task_1 被挂起,系统内核调度下一任务,这时task_2 被唤醒并执行,PB0拉低(这样PB0实际上只置高了1ms)。紧接着暂停500ms。
系统运行500ms: task_1 的500ms延时结束,重新唤醒并执行PB0置高(低电平时间持续了499ms);
...
1ms的高电平时间:499的低电平时间,所以会出现高电平短、低电平持续时间很长的现象。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯