OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2007|回复: 0

OSSchedRoundRobinCfg该函数第二个参数不管设多少,轮转的时间不变,哪里出问题了?

[复制链接]

18

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2015-10-24
在线时间
35 小时
发表于 2016-11-9 21:48:22 | 显示全部楼层 |阅读模式
#if OS_CFG_SCHED_ROUND_ROBIN_EN  
OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);  
#endif
我看原子哥的视频还有看了手册,这个函数的第二个参数我理解成一个时间片的时间长度!
比如是1那么就是 一个时间片:1*5 =5ms
若是2那么就是一个时间片:2*5 =10ms
若是0那么默认一个时间片: 100ms

OSTaskCreate((OS_TCB  * )&Task1_TaskTCB,  
          (CPU_CHAR * )"Task1 task",   
          (OS_TASK_PTR )task1_task,   
          (void  * )0,     
          (OS_PRIO   )TASK1_TASK_PRIO,     
          (CPU_STK   * )&TASK1_TASK_STK[0],
          (CPU_STK_SIZE)TASK1_STK_SIZE/10,
          (CPU_STK_SIZE)TASK1_STK_SIZE,  
          (OS_MSG_QTY  )0,     
          (OS_TICK   )2,  
          (void    * )0,     
          (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
          (OS_ERR  * )&err);   
然后OSTaskCreate函数的参数 (OS_TICK) 这里就是设置该任务最大执行时间!
比如我这里设置了2,那么就是该任务最多有2个时间片的时间执行!
若是设置成3,那么就是该任务最多有3个时间片的时间执行!
以上是我的理解!
但是我在程序中,改了下OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);  中的第2个参数值,发现任务执行的时间根本没变!
不管我把这个值改成0还是多少,任务最大执行时间都是固定。
只有我改了OSTaskCreate函数的参数 (OS_TICK) ,任务最大执行时间才会随之改变!
这样就让我感觉一个时间片的长短是固定的,不是随着OSSchedRoundRobinCfg();  中的第2个参数值而改变的!
求原子哥或者懂的各位解惑下!万分感谢!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 22:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表