![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
ucos 在stm32上,任务切换问题
刚学ucos,对于任务切换的机制不懂,开始以为OSTimeDlyHMSM函数和普通的延时函数一样,后面发现,不使用这个延时,任务就无法切换,可是任务不是在systick的...
刚学ucos,对于任务切换的机制不懂,开始以为OSTimeDlyHMSM函数和普通的延时函数一样,后面发现,不使用这个延时,任务就无法切换,可是任务不是在systick的中断函数里切换的么?下面是我写的两个任务,task_1的优先级高,结果发现,引脚输出的高电平时间很短,低电平相对长很多,这是为什么?
求大神指导!主要是任务切换、systick中断和这个delay函数的作用不太懂 展开
求大神指导!主要是任务切换、systick中断和这个delay函数的作用不太懂 展开
展开全部
细看,两个任务,操作的是同一个端口资源,任务的调度并不是按想像的那样: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的低电平时间,所以会出现高电平短、低电平持续时间很长的现象。
![](https://ecmb.bdimg.com/tam-ogel/68fbe88b0a8f632a86bb01d6623d9be0_60_60.jpg)
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |