![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
书上说ucos移植时,调用OSStart()后启动时钟节拍,即在第一个任务中允许时钟节拍中断
intmain(void){BSP_Init();OSInit();OSTaskCreate(Task_START,(void*)0,&startup_task_stk[...
int main(void)
{
BSP_Init();
OSInit();
OSTaskCreate(Task_START,(void *)0,
&startup_task_stk[STARTUP_TASK_STK_SIZE-1], STARTUP_TASK_PRIO);
OSStart(); //启动各项任务后,任务就由操作系统来管理和调度
return 0;
}
这是主函数
void Task_START(void *p_arg)
{
(void) p_arg;
printf("Task Start!\r\n");
OSTaskCreate(MyTask,(void *)0,
&MyTaskStk[TASK_STK_SIZE-1], MY_TASK_PRIO);
OSTaskCreate(YouTask,(void *)0,
&YouTaskStk[TASK_STK_SIZE-1], YOU_TASK_PRIO);
OSTimeDlyHMSM(0, 0,0,1000);
while(1)
{
OSTimeDlyHMSM(0, 0,0,200);
}
}
这是第一个任务
在第一个任务中哪个是启动时钟节拍的语句,刚开始学移植,请赐教 展开
{
BSP_Init();
OSInit();
OSTaskCreate(Task_START,(void *)0,
&startup_task_stk[STARTUP_TASK_STK_SIZE-1], STARTUP_TASK_PRIO);
OSStart(); //启动各项任务后,任务就由操作系统来管理和调度
return 0;
}
这是主函数
void Task_START(void *p_arg)
{
(void) p_arg;
printf("Task Start!\r\n");
OSTaskCreate(MyTask,(void *)0,
&MyTaskStk[TASK_STK_SIZE-1], MY_TASK_PRIO);
OSTaskCreate(YouTask,(void *)0,
&YouTaskStk[TASK_STK_SIZE-1], YOU_TASK_PRIO);
OSTimeDlyHMSM(0, 0,0,1000);
while(1)
{
OSTimeDlyHMSM(0, 0,0,200);
}
}
这是第一个任务
在第一个任务中哪个是启动时钟节拍的语句,刚开始学移植,请赐教 展开
1个回答
展开全部
ucos ii 并不是每个节拍都进行任务切换,只是每个时钟节拍都去判断是否要进行任务切换;\r\n就算有一个优先级很高的任务每个节拍都要切换,那么也不用担心,因为这个任务不可能在整个节拍的时间里都需要运行,那么一个节拍是10ms,它运行5ms,那么剩下的时间进入的是延时函数,延时函数里便能进行任务切换,让优先级低的任务得以运行。所以这个不用担心。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |