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 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办