ucos移植到stm32之后任务调度问题
根据野火的ucos移植到stm32的程序,创建了三个用户任务,一个是Task_Start,优先级是4,一个是led2_task,优先级是5,一个是led3_task,优先级是6,systick的中断周期是10ms,在task_start中创建了led2_task,和led3_task,我让led2_task任务点亮led2,并且发送数据10000次while (1)
{
int i;
for(i=0;i<10000;i++)
{
LED2( ON );
printf("\r\n this is a task_led2 demo \r\n");
}
OSTimeDlyHMSM(0, 0,2,0);
LED2( OFF);
printf("\r\n this is a task_led2 demo end\r\n");
OSTimeDlyHMSM(0, 0,2,0);
}
但是在这10000次的时候肯定是会大于10ms的,那么不是就会进行任务切换吗,找到最高优先级的就绪任务task_start,然后切换到task_start吗,可是为什么他是等led2的10000次完成之后在 OSTimeDlyHMSM(0, 0,2,0);延时的时候才开始任务切换啊 各位大神 帮帮忙啊 是我对ucos的理解有误吗 如果task_start优先级最高,那么led2是怎么获得运行权的? 在task_start执行之后又延时函数 dong130300 发表于 2013-5-24 15:48 static/image/common/back.gif
在task_start执行之后又延时函数
这就是关键,延时函数 延时多少呢?
如果LED2运行时,start任务延时时间到了,肯定会任务调度的,当然调度器是开的。
hwk612167 发表于 2013-5-25 14:44 static/image/common/back.gif
这就是关键,延时函数 延时多少呢?
如果LED2运行时,start任务延时时间到了,肯定会任务调度的,当然调 ...
明白了 在延时结束之后确实进行了任务调度,我用串口显示结果,在延时1s之后调度到了start_task
页:
[1]