beary 发表于 2016-3-17 15:29:04

我用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++)
{

}

beary 发表于 2016-3-17 15:31:42

书上,会饿死,一直是task2在打印。。我的串口工具还是都有打印,task2和task1,不过task2打印的多一些

beary 发表于 2016-3-17 15:44:19

解决了。。我擦嘞。。。

cube封装了一个taskdelay在下面。。。没注意看。。大家来把最后的分拿拿走然后沉帖吧。。。

xmshao 发表于 2016-3-18 16:16:41

呵呵 正常
谁调试不遇到点麻烦。

power568 发表于 2016-3-18 17:01:42

领教了...

raytheonn 发表于 2019-11-18 09:49:59

请问怎么解决的啊,楼主没说明白啊!

raytheonn 发表于 2019-11-18 09:50:49

请问怎么解决的啊?
页: [1]
查看完整版本: 我用cube生成的FREErtos怎么饿不死低优先级的任务。。