FreeRTOS Posix GCC模拟器vTaskDelay没有正确延迟

时间:2015-11-09 12:10:06

标签: freertos

我正在使用FreeRTOS Posix GCC模拟器并创建简单的任务并延迟1秒并且打印只是没有给出正确的结果。 创建这样的任务应该显示每1秒打印一次文本,但是打印之间似乎更像是8-9秒。 可能是什么问题?

void prvTask1( void *pvParameters )
{

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

        vTaskDelay( 1000 / portTICK_RATE_MS );
    }
}

配置:

#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秒。不知何故,似乎从~500开始提高价值。 1000在延迟1秒时给出更糟糕的结果(变得多于1秒)。

1 个答案:

答案 0 :(得分: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 工作得很好