OpenEdv-开源电子网
标题:
freertos任务调度有疑问,求助
[打印本页]
作者:
尤扬yy
时间:
2018-5-16 12:16
标题:
freertos任务调度有疑问,求助
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é4
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
uart_init(115200); //3õê¼»ˉ′®¿ú
LED_Init(); //3õê¼»ˉLED
//′′½¨èy¸öèÎÎñ
xTaskCreate((TaskFunction_t )start_task1, //èÎÎñoˉêy
(const char* )"start_task1", //èÎÎñÃû3Æ
(uint16_t )TASK1_SIZE, //èÎÎñ¶ÑÕ»′óD¡
(void* )NULL, //′«μY¸øèÎÎñoˉêyμÄ2Îêy
(UBaseType_t )TASK1_PRIO, //èÎÎñóÅÏ輶
(TaskHandle_t* )&TASK1_Handler); //èÎÎñ¾ä±ú
xTaskCreate((TaskFunction_t )start_task2, //èÎÎñoˉêy
(const char* )"start_task2", //èÎÎñÃû3Æ
(uint16_t )TASK2_SIZE, //èÎÎñ¶ÑÕ»′óD¡
(void* )NULL, //′«μY¸øèÎÎñoˉêyμÄ2Îêy
(UBaseType_t )TASK2_PRIO, //èÎÎñóÅÏ輶
(TaskHandle_t* )&TASK2_Handler); //èÎÎñ¾ä±ú
xTaskCreate((TaskFunction_t )start_task3, //èÎÎñoˉêy
(const char* )"start_task3", //èÎÎñÃû3Æ
(uint16_t )TASK3_SIZE, //èÎÎñ¶ÑÕ»′óD¡
(void* )NULL, //′«μY¸øèÎÎñoˉêyμÄ2Îêy
(UBaseType_t )TASK3_PRIO, //èÎÎñóÅÏ輶
(TaskHandle_t* )&TASK3_Handler); //èÎÎñ¾ä±ú
vTaskStartScheduler(); //¿aÆôèÎÎñμ÷¶è
}
请问,开启任务调度器后, vTaskStartScheduler(); ,难道在这三个任务中,不应该是按任务优先级顺序,依次执行吗?
为什么事实不是这样?
作者:
zuozhongkai
时间:
2018-5-16 15:50
肯定是按照优先级顺序执行的!
作者:
FreeRTOSSTM32
时间:
2018-5-18 11:16
若TASK1_PRIO,TASK2_PRIO,TASK3_PRIO均不同,那么会按照优先级高低顺序执行,并不一定是任务1,2,3的顺序执行,若3个任务优先级相同,会按照1,2,3(或者3,2,1,忘记了,看看源码就知道了)的顺序执行
作者:
idfulin
时间:
2018-5-18 11:23
你给出的信息不足以分析问题
作者:
idfulin
时间:
2018-5-18 11:24
建议你把直接把main源码全部贴出了,这样应该可以看出代码实际运行的现象
作者:
大风歌df
时间:
2018-5-19 02:35
看你设置的任务优先级了,优先级高的先被执行
欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/)
Powered by Discuz! X3.4