2015-11-09 2 views
0

Я играю с FreeRTOS Posix GCC Simulator и создаю простую задачу и откладываю 1 секунду, а печать просто не дает правильных результатов. Для создания такой задачи должен отображаться текст, распечатываемый каждые 1 сек, но кажется, что он больше похож на 8-9 секунд между отпечатками. В чем может быть проблема?FreeRTOS Posix GCC Simulator vTaskDelay не задерживается должным образом

void prvTask1(void *pvParameters) 
{ 

    for (;;) 
    { 
     printf("Task 1 ...%d\n", xTaskGetTickCount()); 

     vTaskDelay(1000/portTICK_RATE_MS); 
    } 
} 

Config:

#define configTICK_RATE_HZ    ((portTickType) 1000) 
#define portTICK_RATE_MS    ((portTickType) 1000/configTICK_RATE_HZ) 

Я тестировал со значениями:

#define configTICK_RATE_HZ    ((portTickType) 250) 
#define portTICK_RATE_MS    ((portTickType) 1000/configTICK_RATE_HZ) 

Похоже, это ~ 1 сек на Printf. Как-то кажется, что повышение значений от ~ 500> 1000 дает более высокие результаты с задержкой в ​​1 секунду (становится намного больше 1 с).

+0

Каково значение параметра конфигурации portTICK_RATE_MS? Я подозреваю, что это неправильно настроено. Копирование вывода было бы полезно. – sniper

+0

Вывод не предоставляет никакой информации, так как ошибка во времени, выходные значения являются правильными. – user505160

ответ

0

Freertos демо FreeRtosConfig.h говорит:

#define configTICK_RATE_HZ (1000)  
// In this non-real time simulated environment 
// the tick frequency has to be at least a multiple 
// of the Win32 tick frequency, and therefore very slow. 

Может быть, вы должны попытаться построить и запустить оригинальный пример Freertos. Я попытался запустить пример FreeRtos8.2.1 и vTaskDelay работает просто отлично

Смежные вопросы