HAL 库版本

在使用 CubeMX 初始化的 FreeRTOS 工程后,可以选择默认创建一个线程(名称可配置),位于 freertos.c 中:

/* creation of mainTask */
mainTaskHandle = osThreadNew(StartDefaultTask, NULL, &mainTask_attributes);
/* USER CODE BEGIN RTOS_THREADS */

创建一个新的任务,则需要使用 xTaskCreate 函数,这个函数的声明如下:

BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
                        const char * const pcName,
                        const configSTACK_DEPTH_TYPE usStackDepth,
                        void * const pvParameters,
                        UBaseType_t uxPrioity,
                        TaskHandle_t * const pxCreateTask );
  • TaskFunction_t pxTaskCode:指定的运行函数
  • const char * const pcName:名字
  • const configSTACK_DEPTH_TYPE usStackDepth:栈的深度
  • void * const pvParameters:参数
  • UBaseType_t uxPrioity:优先级
  • TaskHandle_t * const pxCreateTask:句柄

创建一个任务用于串口发送数据:

xTaskCreate(usartTask, "usartTask", 128, NULL, osPriorityNormal, NULL);
void usartTask(void *argument){
        while(1){
            printf("usart task is run!\n");
            HAL_Delay(500);
    }
}

标准库版本