我正在使用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秒)。
答案 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 工作得很好