完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题,我在探索者板子上移植了UCOSIII和STemWin,做时间片那个视频的实验的时候,OS_CFG_tiCK_RATE_HZ定义的是1000u
OSSchedRoundRobinCfg(DEF_ENABLED,10,&err); 时间片长度是10*1=10ms对吧? void TASK2_Task(void *p_arg) { OS_ERR err; while(1) { printf("Task2:789abcrn"); OSTimeDlyHMSM(0, 0, 1, 0, OS_OPT_TIME_HMSM_STRICT, &err); } } void TASK1_Task(void *p_arg) { OS_ERR err; while(1) { printf("Task1:123456rn"); OSTimeDlyHMSM(0, 0, 1, 0, OS_OPT_TIME_HMSM_STRICT, &err); } } 创建任务时两个任务的时间片长度的参数都是2,2*10=20ms 实际的输出是 Task1:12345Task2:7896 ab 反正就是视频教程里出现的类似,TASK1在自己的时间片里没执行完就执行TASK2,然后TASK2的时间片,完了又回来继续执行TASK1 两个任务就是简单的串口输出,要是我时间片长度没算错是20ms的话,这不合理啊 OSTaskCreate(...... (OS_TICK )2, ......); 红色的这个参数我改成过10、20、100、500、1000、5000、10000,结果都一样没啥效果 我就想可能是我移植的过程中哪里出错了,我就用原子哥的例6-3的时间片调度的例子来改 OS_CFG_TICK_RATE_HZ定义的是1000u OSSchedRoundRobinCfg(DEF_ENABLED,10,&err); OSTaskCreate(...... (OS_TICK )2, ......); 改的就这几个,最后发现和我自己移植的程序的效果是一样一样的,请教这是怎么回事? |
|
相关推荐
7个回答
|
|
呃,同样的改法放到原子哥的历程里行不通,这到底是怎么回事啊?有人遇到过这样的情况么?求解答
|
|
|
|
在两个任务里加了OSSchedRoundRobinYield(),结果:
|
|
|
|
|
|
|
|
用Printf竟然不加临界,什么是时间片?到了时间,就切到另外一个任务,不管有没有结束,直接切!
|
|
|
|
唉我去,我好像有地方理解错了
|
|
|
|
楼主,你这个问题解决了吗?我也出现同样的问题呢,我看原子的探索者的例程不加临界 也是可以正常运行的,原子哥能不能解释一下,我看关于这个问题有很多朋友都提出来了,都没有得到解答,麻烦解答一下!
|
|
|
|
楼主,你这个问题解决了吗?我也出现同样的问题呢,我看原子的探索者的例程不加临界 也是可以正常运行的,原子哥能不能解释一下,我看关于这个问题有很多朋友都提出来了,都没有得到解答,麻烦解答一下!
|
|
|
|
只有小组成员才能发言,加入小组>>
695 浏览 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:58 , Processed in 1.257317 second(s), Total 92, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号