xzq338 2021-11-10 16:11 采纳率: 85.7%
浏览 28
已结题

刚学习FreeRTOS做的一个小实验,有点问题不明白


int main(void)
{
    /* Init board hardware. */
    BOARD_InitPins();
    BOARD_BootClockRUN();
    BOARD_InitMemory();
    BOARD_InitDebugConsole();

    /* Install IRQ Handler */
    SystemInitIrqTable();
   
    if(xTaskCreate(AppTaskCreate,"AppTaskCreate",configMINIMAL_STACK_SIZE + 10,NULL,1,AppTaskCreate_Handle) == pdPASS)
    {
      PRINTF("AppTaskCreate任务创建成功\n");
    }
    
    vTaskStartScheduler();
    for (;;)
        ;
}
static void AppTaskCreate(void)
{
  BaseType_t xReturn = pdPASS;
  
  taskENTER_CRITICAL();//进入临界区
  
  //创建LED任务
  xReturn = xTaskCreate(LED_Task,"LED_Task",configMINIMAL_STACK_SIZE + 10,NULL,2,LED_Task_Handle);
  if(pdPASS == xReturn)
      PRINTF("创建LED_Task任务成功!\r\n");
  
  
  //创建HelloWorld任务
  xReturn = xTaskCreate(HelloWorld_Task,"HelloWorld_Task",configMINIMAL_STACK_SIZE + 10,NULL,3,HelloWorld_Task_Handle);
  if(pdPASS == xReturn)
      PRINTF("创建HelloWorld_Task任务成功!\r\n");
  
  
  //创建AHT20_Task任务
  xReturn = xTaskCreate(AHT20_Task,"AHT20_Task",configMINIMAL_STACK_SIZE + 10,NULL,3,AHT20_Task_Handle);
  if(pdPASS == xReturn)
      PRINTF("创建AHT20_Task任务成功!\r\n");
  
  
  vTaskDelete(AppTaskCreate_Handle);//删除创建任务
  
  taskEXIT_CRITICAL();//退出临界区
}

static void LED_Task(void *pvParameters)
{ 
    for (;;)
    {
      PRINTF("LED_ON\r\n");
      vTaskDelay(500);
      
      PRINTF("LED_OFF\r\n");
      vTaskDelay(500);
      
    }
}

static void HelloWorld_Task(void *pvParameters)
{
    for (;;)
    {
        PRINTF("Hello world.\r\n");
        vTaskDelay(2000);

    }
}

static void AHT20_Task(void *pvParameters)
{ 
    for (;;)
    {
      PRINTF("没有传感器\r\n");
      vTaskDelay(5000);    
    }
}

上电运行的结果是这样的

img

程序先执行AppTaskCreate这个任务,但是其他三个任务都还没创建,为什么会输出箭头所指的内容呢,很不明白。

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2021-11-10 17:17
    关注

    不奇怪,任务一创建就会执行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 创建了问题 11月10日

悬赏问题

  • ¥15 关于CPLEX的问题,请专家解答
  • ¥15 cocos的点击事件 怎么穿透到 原生fragment上。
  • ¥20 基于相关估计的TDOA算法中的加权最小二乘拟合法matlab仿真
  • ¥20 基于相关估计的TDOA算法中的自适应加权广义互相关法。
  • ¥15 abaqus CAE 2024软件启动问题
  • ¥20 基于相关估计的TDOA算法中的局部互相关函数滤波matlab仿真
  • ¥15 CDH6.0.1 hue报错
  • ¥15 javaFX利用scene builder的fxml文件进行开发时的label setText方法未生效问题
  • ¥15 notepad++ 自动补全提示,如输入汉字"人名",就会出现"张三","李四"
  • ¥15 如何用matlab实现PSO算法与两种智能优化算法在30维和50维问题上的性能比较?