【发布时间】:2020-02-26 21:30:55
【问题描述】:
我有一个使用 Arduino_FreeRtos 运行 FreeRTOS 草图的 Arduino MEGA 2560。除了 vTaskDelay 函数外,一切似乎都正常工作。以下是我遇到问题的领域之一。
taskENTER_CRITICAL();
MOTORS[5].motor(1, 120);
MOTORS[6].motor(1, 127);
taskEXIT_CRITICAL();
vTaskDelay(pdMS_TO_TICKS(9000));
taskENTER_CRITICAL();
MOTORS[5].motor(1, 0);
MOTORS[6].motor(1, 0);
taskEXIT_CRITICAL();
第一个任务关键部分开始推动我的电机前进。应该有 9 秒的延迟,然后电机应该在第二个任务关键部分停止。实际发生的是电机向前移动约 1 秒然后停止。
我确实在 FreeRTOSConfig.h 文件中启用了 INCLUDE_vTaskDelay。
我还可以查看什么来尝试找出 vTaskDelay 不起作用的原因?
【问题讨论】:
-
我怀疑您没有以您期望的时钟频率运行。
-
@Realtime Rik:我添加了时钟的定义。你觉得这个定义有什么问题吗?