1.在main.c中添加FreeRTOS相关头文件和板载外设的头文件

2.创建需要的任务句柄

3.声明任务函数

4.main.c中的代码如下

/* FreeRTOS头文件 */
#include "FreeRTOS.h"
#include "task.h"

/* 板载外设头文件 */
#include "stm32f4xx.h"
#include "./led/bsp_led.h"
#include "./usart/bsp_debug_usart.h"

/*****************任务句柄***********************/
static TaskHandle_t APPTaskHandle_t = NULL;
static TaskHandle_t LEDTaskHandle_t = NULL;

/*****************函数声明********************/
static void Bsp_Init(void);
static void APPTaskCreate(void);
static void LEDTask(void * params);
/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
int main(void)
{
    BaseType_t xReturn = pdPASS;
    
    Bsp_Init();
    
    printf("\r\n 这是一个任务动态创建实验 \r\n");

    xReturn = xTaskCreate((TaskFunction_t)APPTaskCreate,
                          (const char*)"APPTaskCreate",
                          (uint16_t)128,
                          (void *)NULL,
                          (UBaseType_t)1,
                          (TaskHandle_t *)&APPTaskHandle_t);    
    
    if(pdPASS==xReturn)
        //开启任务调度
        vTaskStartScheduler();
    else
        return -1;
    
    while(1);
}

//APPTaskCreate任务
static void APPTaskCreate(void)
{
    //创建信息返回值
    BaseType_t xReturn = pdPASS;
    
    //进入临界区
    taskENTER_CRITICAL();
    
    xReturn = xTaskCreate((TaskFunction_t)LEDTask,
                          (const char*)"LEDTask",
                          (uint16_t)128,
                          (void *)NULL,
                          (UBaseType_t)2,
                          (TaskHandle_t *)&LEDTaskHandle_t);
    if(pdPASS==xReturn)
        printf("\r\n LED_Task任务创建成功 \r\n");
    
    //删除任务
    vTaskDelete(APPTaskHandle_t);

    taskEXIT_CRITICAL();
}

//创建LEDTask
static void LEDTask(void * params)
{
    while(1)
    {
        LED1_ON;
        vTaskDelay(500);
        printf("LED_Task Running,LED1_ON\r\n");
        
        LED1_OFF;
        vTaskDelay(500);
        printf("LED_Task Running,LED1_OFF\r\n");
    }
}

static void Bsp_Init(void)
{
    LED_GPIO_Config();
    
    Debug_USART_Config();
}

5.编译代码,成功如图所示

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐