FreeRTOS 配置TICK_RATE_HZ

2023-12-02

我使用的是带有 5.4 版 FreeRTOS 的 MSP430f5438。

我有一个有趣的问题,我无法弄清楚。

基本上,当我将 configTICK_RATE_HZ 设置为不同的值时,LED 闪烁得更快或更慢;它应该保持相同的速率。我将 configTICK_RATE_HZ 设置得越高,它闪烁得越慢,而当我将 TICK_RATE 设置得较低时,它闪烁得越快。

vTaskDelayUntil( &xLastFlashTime, xFlashRate );无论 configTICK_RATE_HZ 是多少,LED 应该每秒只闪烁一次。我逐步检查了 xFlashRate 以进行确定。它总是 = configTICK_RATE_HZ。 代码:

xFlashRate = ledFLASH_RATE_BASE;//my flash base rate is 1000ms
xFlashRate /= portTICK_RATE_MS; //so xFlashrate = whatever configTICK_RATE_HZ equals

/* We need to initialise xLastFlashTime prior to the first call to vTaskDelayUntil().*/ 
xLastFlashTime = xTaskGetTickCount();
for(;;) { 
vTaskDelayUntil( &xLastFlashTime, xFlashRate ); vParTestToggleLED( uxLED ); 
flashled();//this should happen every 1 second.
}

当我将 configtick_rate_hz 设置为 1000 时,LED 闪烁的周期大于 1 秒,当我将滴答率设置为小于 ~200 时,LED 闪烁的周期远小于 1 秒

configTICK_RATE_HZ 不应影响 LED 闪烁时间。

我意识到需要更多信息,并将随时提供所需的任何代码片段来提供帮助。


RTOS 节拍由定时器中断生成。计时器设置(不正确),因此无论您设置什么 configTICK_RATE_HZ ,它总是会在 400kHz 处产生固定滴答声。由于闪烁率是在 RTOS 滴答率由 configTICK_RATE_HZ (portTICK_RATE_MS = 1000/configTICK_RATE_HZ) 正确表示的假设下设置的,因此问题随之而来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS 配置TICK_RATE_HZ 的相关文章

随机推荐