Приведенный ниже фрагмент кода создает две задачи, которые пытаются распечатать слово. Задача 2 создается с более высоким приоритетом. Поскольку обе задачи выполняются в бесконечном цикле и не отказываются от времени начала добровольно, задача 1 никогда не будет выполняться (время начала ... Если это правильное слово).
Как я могу изменить функцию обратного вызова Задачи 2, чтобы эта Задача 1 также получила время начала?
void vTaskFunction ( void *pvParameters ) {
for( ;; ) {
vPrintString((char *) pvParameters );
}
}
static const char *pcTextForTask1 = "Task 1 is running\r\n";
static const char *pcTextForTask2 = "Task 2 is running\r\n";
int main( void ) {
/* ...MCU initialization...*/
xTaskCreate( vTaskFunction, "Task 1", 1000, (void*)pcTextForTask1, 1, NULL ); // Task with priority 1
xTaskCreate( vTaskFunction, "Task 2", 1000, (void*)pcTextForTask2, 2, NULL ); // Task with priority 2
vTaskStartScheduler();
for( ;; );
}
Я надеюсь это имеет смысл
configUSE_PREEMPTION
? Какое поведение вы хотите получить? Как часто вы хотите запускать другую функцию? а почему неvTaskDelay(10)
? - person KamilCuk   schedule 22.10.2020