根据野火的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);延时的时候才开始任务切换啊 |