使用STM32的usb虚拟串口CDC_Transmit_FS打印freertos的任务列表vTaskList

发布时间 2023-07-07 22:30:03作者: 不打鱼光晒网
创建一个任务,打印信息后,把自己删除
/* USER CODE END Header_func_showSysInfo */
void func_showSysInfo(void const *argument) {
    /* USER CODE BEGIN func_showSysInfo */
    /* Infinite loop */
    for (;;) {
        osDelay(1000);
        char taskList[200];
        memset(taskList, 0, 200);
        vTaskList(taskList);
        char sysInfo[] = { '\r', '\n', '\r', '\n', '-', '-', '-', '-', '-', '-',
                '-', '-', '-', '-', '-', '-', '-', '-', 'F', 'r', 'e', 'e', 'R',
                'T', 'O', 'S', ' ', 'V', '1', '0', '.', '0', '.', '1', '-', '-',
                '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
                '\r', '\n' };
        CDC_Transmit_FS(sysInfo, sizeof(sysInfo));
        osDelay(10);//等待发送完成,不然无法发送下一条
        CDC_Transmit_FS("任务名      任务状态  优先级  剩余栈  任务号\r\n", 46);
        osDelay(10);//等待发送完成,不然无法发送下一条    
        CDC_Transmit_FS(taskList, strlen(taskList));
        osDelay(10);//等待发送完成,不然无法发送下一条
        CDC_Transmit_FS("B:阻塞   R:就绪   D:删除   S:暂停   X:运行\r\n", 42);
        osDelay(1);
        vTaskDelete(NULL);//删除自己
    }
    /* USER CODE END func_showSysInfo */
}

  效果

具体实现

1

2

 

 3

 

 4

 

 5