У меня проблема с запуском FreeRTOS на процессоре cortex m4.У меня есть 3 задачи: периодическая и 2 непрерывных.
static const char text1[] = "Periodic task\r\n";
static const char text2[] = "Continous Task\r\n";
static const char text3[] = "Continous Task 2\r\n";
void periodicTask(void *pvParameter)
{
TickType_t prevCount;
char *printText = (char*)pvParameter;
prevCount= xTaskGetTickCount();
for(;;)
{
printf(printText);
vTaskDelayUntil(&prevCount,pdMS_TO_TICKS(5));
}
}
void continousTask(void *pvParameter)
{
char *printText = (char*)pvParameter;
for(;;)
{
printf(printText);
vTaskDelay(1);
}
}
int main(void)
{
xTaskCreate(periodicTask,"periodic task",200,(void*)text1,3,NULL);
xTaskCreate(continousTask,"continous task 1",200,(void*)text2,0,NULL);
//xTaskCreate(continousTask,"continous task 2",200,(void*)text3,0,NULL);
vTaskStartScheduler();
while(1)
{
}
return 0 ;
}
Выше код выполняется просто отлично, но только если я получил vTaskDelay(1)
в continousTask, если я удалю его, моя непрерывная задача 2 и периодическая задача будут голодать (илизапустить не в нужный период), который не должен выполняться, потому что периодическая задача имеет более высокий приоритет.Непрерывное задание 2 также не должно голодать, потому что я определил configUSE_TIME_SLICING 1
.