完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有两个任务:
task1 任务优先级 3 task2 任务优先级 4 (当设置task2的优先级小于10时,task1不能实现0.5S打印"task1";当设置task2优先级大于等于10时,就可以) void task1() { while(1) { printf("task1rn"); OStimeDlyHMSM(0, 0, 0, 500,OS_OPT_TIME_HMSM_STRICT,&err); } } void delay_2s() { //自己实现的延时 } void task2() { while(1) { delay_2s();//自己实现的延时2S printf("task2rn"); OSTimeDlyHMSM(0, 0, 0, 500,OS_OPT_TIME_HMSM_STRICT,&err); } } |
|
相关推荐
9个回答
|
|
我试验过没问题啊,优先级高的task1延时到了就运行,不管task2有没有释放CPU,我把代码和截图贴出来。例10-3 UCOSIII使用信号量进行任务同步.rar (13.5 MB )
|
|
|
|
为什么会这样??
|
|
|
|
你从哪里得出的task2优先级小于10时,task1不能实现0.5s打印“task1”的结论?就你这个试验写法,task1和task2都能非常正常的工作,每个时钟周期UCOSIII都会进行一次任务切换!task1的优先级为3高于task2的4,所以每次任务切换的时候task1都会运行!!
|
|
|
|
个人觉得问题的关键是你自己写的延时函数,是用系统函数来堆积,还是用耗时指令是堆积。如果用系统函数的话,这中间就会引起任务调度!
|
|
|
|
不是得出结论,是不懂哪里出现问题导致这种情况出现; 当我把task2任务优先级设置为小于10时,task1确实不能准时打印。
|
|
|
|
左哥,更确切的是说每个时钟节拍都会运行就绪链表的最高优先级任务
|
|
|
|
对的,是这个道理。
|
|
|
|
原因找到了 从官方下载STM32F17例程 该工程的Tick任务优先级设为10 没注意 现在改为1就好了
|
|
|
|
这个问题我之前倒是没考虑过,很好 给大家一个警示。下的官方代码TICK任务优先级太低,接收到信号量但是运行不了导致就绪列表无法更新
|
|
|
|
只有小组成员才能发言,加入小组>>
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 11:03 , Processed in 1.386779 second(s), Total 94, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号