完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我把按键点亮LED灯的任务的优先级定为最低(优先级8,其他自定义任务都比他高),在这个while(1)里面没有任何能进行任务调度的函数,优先级高的任务也能正常运行,如用串口打MPU6050的波形发回到上位机,也没有观察到有卡顿的现象,就是按键点亮LED灯反应有点慢,能看出明显的延迟。 如果我把这个任务的优先级改为4,串口就完全没有数据了,CH340发送指示灯不亮,卡死在了按键处理任务中,同时,按键处理函数完全没有了延时,运行得非常快,跟跑裸机没区别。
所以是不是证明了我的想法:UCOSIII中,除去系统任务之外,自己写的最低优先级任务在不调用任务切换函数的情况下,也能进行任务切换? 另外再问一个问题:如果调用软件定时器,在系统中有阻塞任务的时候,如等待信号量,是否能准时的执行回调函数?我想用它来喂看门狗。 |
|
相关推荐
5个回答
|
|
任务切换很多地方都可以发生。
当你的任务没有任何延时,发送 邮箱,等待信号量什么的等可以引起任务调度的代码时,那就是通过systick中断来调度了。 当你的任务有其他方式引起调度的时候,那就是随着你的流程来调度的。 |
|
|
|
滴答定时器中断服务函数会调用任务切换函数的。
|
|
|
|
滴答定时器中断服务函数每5ms运行一次,那为什么只有在自定义优先级最低的时候才会进行任务切换呢?因为在系统里,他的优先不是最低的,还是空闲任务和统计任务。
|
|
|
|
那原子哥,是因为高优先级的任务可以占有CPU,所以如果在低优先级的任务中不自己调用任务切换函数,每5ms进行一次任务调度,所以高优先级也能运行,但是如果在高优先级里面写死while(1)的话,他就会一直占有CPU,下面的低优先级就无法运行了吗?
|
|
|
|
原子哥可不可以告诉我一下uCOSIII中如果正在执行一个外部中断服务函数(里边只是点亮了一个灯其他什么也没有)这时来了systick中断是不是不会发生任务切换啊?
|
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:17 , Processed in 1.106424 second(s), Total 87, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号