我用cube生成的FREErtos怎么饿不死低优先级的任务。。
任务的内容其实就是打印两个任务的内容一样
是
printf("打印内容");
for(i = 0 ; i < 100 ; i++);
下面是我任务的声明,经过cube封装过的
//系统的任务
osThreadDef(defaultTask, StartDefaultTask, osPriorityLow, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
//我自己的任务
osThreadDef(MyTask, Task1, osPriorityRealtime, 0, 128);
TaskHandle = osThreadCreate(osThread(MyTask), NULL);/* USER CODE END RTOS_THREADS */
可是根据freeRTOS的手册上说,
如果高优先级的任务用空循环不是vTaskDelay()的话,就会饿死低优先级的任务。。
我现在这段代码优先级不一样,代码里用的是空循环。。怎么饿不死、、
两个任务代码的内容一样
static int count = 0;
int loop = 0;
printf("%s:%d\r\n",__func__,count++);
for(loop = 0 ; loop < 100 ; loop++)
{
}
书上,会饿死,一直是task2在打印。。我的串口工具还是都有打印,task2和task1,不过task2打印的多一些 解决了。。我擦嘞。。。
cube封装了一个taskdelay在下面。。。没注意看。。大家来把最后的分拿拿走然后沉帖吧。。。 呵呵 正常
谁调试不遇到点麻烦。 领教了... 请问怎么解决的啊,楼主没说明白啊! 请问怎么解决的啊?
页:
[1]