This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2800157:FreeRTOS 任务暂停和 vTaskDelay

Guru**** 2538960 points
Other Parts Discussed in Thread: SYSCONFIG, TMS320F2800157

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1347114/tms320f2800157-freertos-task-suspend-and-vtaskdelay

器件型号:TMS320F2800157
主题中讨论的其他器件:SysConfig

我将 TMS320F2800157与 FreeRTOS 配合使用。 使用 SysConfig 工具配置项目、我创建了两个任务来使控制卡中的两个 LED 闪烁。 不过、正如这里的其他微控制器一样、FreeRTOS 易于使用。 但在这里、我看到了不同或缺失的东西。  我创建了两个任务、以不同的延迟切换每个 LED ... 但它们执行相同的时间,一个最低的延迟。 在我使用具有此器件型号的 FreeRTOS 之前、有没有要阅读的文档?  下面是这两个切换 LED 的任务、我的观察是两个 LED 以1秒的间隔进行切换。

void myBlink1Task (void * pvParameters)
{
GPIO_togglePin (LED2);
vTaskDelay (1000);

void myBlink2Task (void * pvParameters)
{
GPIO_togglePin (LED1);
vTaskDelay (5000);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maheswaran:

    FreeRTOS 任务需要循环执行、否则每个任务函数在执行一次后将返回、并进入不可预测的状态。 如果这是所需的行为、则需要适当地删除任务。  

    关于延迟时间、vTaskDelay 中传递的参数是要延迟的节拍周期数。 以秒为单位的值将取决于 FreeRTOSConfig.h 中设置的节拍率

    谢谢。

    阿纳维

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Amav Menon、

    我同意您的观点... 或许我可以如下所示修改我的代码...

    void myBlink1Task (void * pvParameters)
    {

    while (1)

    {

       GPIO_togglePin (LED2);
        vTaskDelay (1000);



    void myBlink2Task (void * pvParameters)
    {

    while (1)

     {

      GPIO_togglePin (LED1);
       vTaskDelay (5000);

     }

    但是、FreeRTOS 中的某些参数设置仍然无法按预期运行。 我的节拍时间为1ms (1000Hz)。 因此、我对1000ms 的期望是正确的、

    一个更新是、我使用"Universal2000"示例工程重新创建该工程、并添加了 FreeRTOS、该工程会按预期工作。  

    我的某些 RTOS 自由设置或项目设置有问题。