打印
[STM32F1]

初学STM32F1,关于OSStartHighRdy()的问题,请教一下高手

[复制链接]
3330|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
气持5|  楼主 | 2014-3-21 14:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
高手帮帮忙,指点指点。
下面main()函数里面return 0会被执行吗?
int main(void)
{
   CPU_INT08U os_err;
   BSP_IntDisAll();                                            /* Disable all ints until we are ready to accept them.  */
   OSInit();                                                   /* Initialize "uC/OS-II, The Real-Time Kernel".         */
   BSP_Init();                                                 /* Initialize BSP functions.  */

   ReaderParamInit(); //   
    os_err = OSTaskCreate((void (*) (void *)) App_TaskStart,
               /* Create the start task.                               */
                          (void *) 0,
               (OS_STK *) &App_TaskStartStk[APP_TASK_START_STK_SIZE - 1],
               (INT8U) APP_TASK_START_PRIO);
   //printf("Creat App_TaskStart!\r\n");
   OSTimeSet(0);
   OSStart();                                                  /* Start multitasking (i.e. give control to uC/OS-II).  */

   return 0;
}
沙发
hualiming025| | 2014-3-24 16:16 | 只看该作者
return0不会被执行,这个main函数执行到OSStart()之后就进入ucos系统了,接下来被执行的是一个个任务,main()函数也就执行到此为止,其中的代码再也不会被执行了,除了复位

使用特权

评论回复
板凳
shangwei4444| | 2014-3-24 16:39 | 只看该作者
楼上正解,ucos每个任务都是死循环,操作系统在各个任务间进行调度,不会再回到main.

使用特权

评论回复
地板
气持5|  楼主 | 2014-3-27 15:13 | 只看该作者
shangwei4444 发表于 2014-3-24 16:39
楼上正解,ucos每个任务都是死循环,操作系统在各个任务间进行调度,不会再回到main. ...

如果我执行某个任务时,就绪任务中并没有优先级更高的任务,是不是就会在当前运行的任务中一直循环,死在里面了?

使用特权

评论回复
5
气持5|  楼主 | 2014-3-27 15:20 | 只看该作者
hualiming025 发表于 2014-3-24 16:16
return0不会被执行,这个main函数执行到OSStart()之后就进入ucos系统了,接下来被执行的是一个个任务,ma ...

明白了,谢谢!
还想问下,要是当前任务运行中,来了一个中断,当前运行的任务是不是就会变成就绪任务?

使用特权

评论回复
6
hualiming025| | 2014-3-27 16:23 | 只看该作者
气持5 发表于 2014-3-27 15:20
明白了,谢谢!
还想问下,要是当前任务运行中,来了一个中断,当前运行的任务是不是就会变成就绪任务? ...

额,这个还不太清楚,要分析源代码才能知道,有人知道答案吗?

使用特权

评论回复
7
shangwei4444| | 2014-4-1 14:17 | 只看该作者
气持5 发表于 2014-3-27 15:13
如果我执行某个任务时,就绪任务中并没有优先级更高的任务,是不是就会在当前运行的任务中一直循环,死在 ...


1、如果你所说的运行任务不被中断、没有延迟、不被删除...
总之不会转到另一个状态,理论上说真的死循环了。
2、任务被中断后,会进入中断服务子程序,从中断服务子程序返回之前,
μC/OS-Ⅱ要判定,被中断的任务是否还是就绪态任务中优先级最高的,
也就是说会进行一次任务调度。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

16

帖子

0

粉丝