FreeRTOS Arduino MEGA 2560 vTaskDelay() 不工作

FreeRTOS Arduino MEGA 2560 vTaskDelay() not working

我有一个 Arduino MEGA 2560 运行 一个使用 Arduino_FreeRtos 的 FreeRTOS 草图。除 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 不工作的原因?


下面是时钟的定义。根据评论,时钟可能不正确。我无法破译时钟是否正确。希望有人可以指出此设置是否可能导致问题。

我认为问题是 128000 >> (portUSE_WDTO + 11) 可能是 0(除非 portUSE_WDTO 是负数)。 为了获得正确的时间,您需要检查滴答率是否符合预期(30 毫秒)。目前不太可能是这种情况。