完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 337881256 于 2014-9-21 21:11 编辑
uC/OS-II,我的多任务是让两个LED灯闪烁,有两个任务。但是程序只运行那个优先级高的任务。 请问这是为什么? 附:main函数 int main (void) { /*#if (OS_TASK_NAME_SIZE > 7) && (OS_TASK_STAT_EN > 0) CPU_INT08U err; #endif*/ /*-----------------------------------------------------------------------------------*/ DisableInterrupts(); BSP_Init(); OSInit(); EnableInterrupts(); OSTaskCreate(Task_LED2,(void *)0, //创建任务2 &task_led2_stk[TASK_LED2_STK_SIZE-1], TASK_LED2_PRIO); OSTaskCreate(Task_LED1,(void *)0, //创建任务1 &task_led1_stk[TASK_LED1_STK_SIZE-1], TASK_LED1_PRIO); OSStart(); return 0; /*-----------------------------------------------------------------------------------*/ /*#if (OS_TASK_NAME_SIZE > 7) && (OS_TASK_STAT_EN > 0) OSTaskNameSet(APP_TASK_START_PRIO, (CPU_CHAR *)"Startup", &err); #endif*/ /* Start multitasking (i.e. give control to uC/OS-II) */ } |
|
相关推荐
8个回答
|
|
高优先级任务一直占着CPU,低优先级任务得不到执行。
|
|
|
|
每个任务都要释放一下CPU,在任务中加入一个系统延时函数就好了。(不要太短,自己把握时间)
|
|
|
|
osdelay(), 把它加入到task1的下边
|
|
|
|
首先检查你的最大任务数是多少 不能设太少 如果你有两个任务 则要设置最大任务数为4个 两个留给系统。
然后检查你的两个任务的延时是用普通的延时还是,OS自带OSTimeDly的延时。如果你用普通的延时 那么只能运行 第一个任务!你这个最大的可能性是 任务延时不是系统的OSTimeDly来延时 而是用自己写普通延时来延时,那样子任务无法调度! |
|
|
|
为什么我看不到你完整的程序啊
|
|
|
|
把完整的代码贴出来,这写太简单了,
估计可能是:你的延时函数是自己写的,不是调用的OSTimeDlyHMSM这个函数,在ucos系统中,任务要通过这个函数释放对CPU的占有权,不能是自己定义的一个delay函数 |
|
|
|
估计是优先级的问题
|
|
|
|
7#说的很准确,用一种格式的任务去调用就行
|
|
|
|
只有小组成员才能发言,加入小组>>
UCOSII中断中添加OSSemPost(Sem);程序无法运行
4979 浏览 1 评论
在BC5.0上编译uC/OS-II出现"eeror writing object file",怎样处理???
3193 浏览 1 评论
560浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 11:18 , Processed in 0.671041 second(s), Total 79, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号