vTaskDelay永远不会返回

时间:2017-08-02 07:37:31

标签: stm32 freertos

我的应用程序在stm32F4上使用FreeRTOS V9.0.0和端口文件Source \ portable \ RVDS \ ARM_CM4F(通过RTE Keil导入)运行。 主要是调用一些初始化函数,创建任务然后调用vTaskStartScheduler。 该任务只调用永不返回的vTaskDelay(1000)。系统不是故障。故障报告不会显示任何错误或问题。

代码是:

int main(void) 
{
 init_foo1()
 init_foo2()
 xTaskCreate(aTask, "name",1280, NULL, 6, NULL);
 init_foo3();
 vTaskStartScheduler();
 }
 void aTask()
 {
 vTaskDelay(1000);
 bar();
 }

有什么问题? 谢谢大家

1 个答案:

答案 0 :(得分:1)

首先需要放置无限循环:

根据documentation vTaskDelay 功能的使用示例:

 void vTaskFunction( void * pvParameters )
 {
 /* Block for 500ms. */
 const TickType_t xDelay = 500 / portTICK_PERIOD_MS;

     for( ;; )
     {
         /* Simply toggle the LED every 500ms, blocking between each toggle. */
         vToggleLED();
         vTaskDelay( xDelay );
     }
}

还要测试 xTaskCreate

中的优先级
UBaseType_t uxPriority