首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RTOS vTasDelayUntil不工作

RTOS vTasDelayUntil不工作
EN

Stack Overflow用户
提问于 2018-04-15 01:00:28
回答 1查看 383关注 0票数 0

我在Visual Studio代码中通过PlatformIO使用ESP-IDF和TTGO模块,并希望使用vTaskDelayUntil()函数来实现解锁延迟。不幸的是,当使用它时,在该任务中没有发生任何事情。

已在配置中设置#define INCLUDE_vTaskDelayUntil %1。

下面是我的代码:

代码语言:javascript
复制
void blink_task(void *pvParameter)
{
  TickType_t xLastWakeTime;
  const TickType_t DelayLED = 250/portTICK_PERIOD_MS;
  xLastWakeTime = xTaskGetTickCount();

  bool LEDstatus = false;

  gpio_pad_select_gpio(BLINK_GPIO);
  gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);

  for(;;){
    vTaskDelayUntil( &xLastWakeTime, DelayLED);
    if (LEDstatus == false)
    {
        gpio_set_level(BLINK_GPIO, 0);
        LEDstatus = true;
    }
    else
    {
        gpio_set_level(BLINK_GPIO, 1);
        LEDstatus = false;
    }       
  }
}


extern "C" int app_main(void)
{
    xTaskCreatePinnedToCore(&blink_task, "blink_task", configMINIMAL_STACK_SIZE, NULL, 5, NULL, 0);

    return 0;
}

vTaskDelay()运行得很好,但是当我添加另一个任务时会有很大的延迟。这就是我想使用vTaskDelayUntil的原因。

有谁知道这里出了什么问题吗?

非常提前感谢您。

诚挚的问候,

马丁

EN

回答 1

Stack Overflow用户

发布于 2018-04-22 18:04:25

FreeRTOS使用预感系统来调度任务,这意味着如果在运行状态下存在优先级较高的任务,调度器就不会切换到另一个任务。检查所有任务的优先级,确保优先级较高的任务不会长时间工作!另一个问题可能是堆栈大小,增加堆大小,然后再次检查它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49833967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档