注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
熊猫的个人空间 https://home.eeworld.com.cn/space-uid-293679.html [收藏] [复制] [分享] [RSS]
日志

lm3s上初学uCOS II 时的一点心得

已有 1519 次阅读2010-12-27 22:13

最近开始在lm3s上学习uCOS的任务管理,遇到些问题,得到些体会特来分享给大家!!


我开始将lm3s3pwm模块同时启用,将各pwm模块的配置操作放在3个独立的任务,我以其中我建的一个pwmout任务为例来说明


 


……


pwm的配置:PWMGenConfigure(PWM_BASE, PWM_GEN_0, PWM_GEN_MODE_UP_DOWN  |  PWM_GEN_MODE_NO_SYNC            


                                                                                                                                |  PWM_GEN_MODE_GEN_NO_SYNC);


 


……


OSTaskCreate (pwmout1, (void *)0, &Gstkpwm1[TASK_PWM1_STK_SIZE-1], TASK_PWM1_PRIO);
……


static  void  pwmout0(void  *parg)
{
   (void)parg;
   pwm0(500,500);                                  /*
更改pwm周期和脉宽*/
   while(1);


 }


一开始根本就意识不到这个问题,后来看很多资料加之N次调试才发现问题所在,优先级比它低的任务都不能执行,对可剥夺型的Ucos,只有优先级高于它的任务才能打断它,除此之外cpu一直被这个pwmout0任务所霸占。最后得出的总结:在创建任何任务时(除空闲任务),任务内容中必须包含能使该任务自动让出cpu控制权的代码(比如挂起、删除或改变优先级)。在所查阅的资料中都未强调这一点,只有如下这个框图,对我们菜鸟级的初读次图时未必能意识到这一点。


 


 


评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章