实验目标
学会vTaskSuspend( )、vTaskResume( ) 任务挂起与恢复相关API函数使用:
start_task:用来创建其他的三个任务。
task1:实现LED1每500ms闪烁一次。
task2:实现LED2每500ms闪烁一次。
task3:判断按键按下逻辑,KEY1按下,挂起task1,按下KEY2在任务中恢复task1。
CubeMX环境准备
添加 KEY2

STM32 FreeRTOS 任务创建和删除实验(动态方法)-CSDN博客
基于上述代码进行修改和添加
FreeRTOSConfig.h代码清单
#define INCLUDE_vTaskSuspend                            1
#define INCLUDE_xTaskResumeFromISR                      1
// 文件中已有该宏定义,原值为0,修改为1即可,请勿重复定义
#define configUSE_TRACE_FACILITY 1
#define configUSE_STATS_FORMATTING_FUNCTIONS 1注意查看上下代码是否有重复,方式:双击单词查看
参考:STM32 FreeRTOS 的任务挂起与恢复以及查看任务状态-CSDN博客
通过编译没有错误,证明迁移完成
FreeRTOS_demo.h代码清单
#ifndef __FREERTOS_DEMO_H
#define __FREERTOS_DEMO_H
#include "FreeRTOS.h"
#include "task.h"
#include "led.h"
#include "key.h"
#include <stdio.h>
#include "stm32f1xx_hal.h"
// 主入口:启动(创建启动任务,开启调度器)
void FreeRTOS_Start(void);
#endifFreeRTOS_demo.c代码清单
添加task4
// 5. Task4 任务函数和相关参数
#define TASK4_NAME "Task4"
#define TASK4_STACK_DEPTH 128
#define TASK4_PRIORITY 5
TaskHandle_t task4_handler;
void Task4(void *pvParameters);启动函数体中添加xtaskcreate---task4
xTaskCreate(
        (TaskFunction_t)Task4,
        (char *)TASK4_NAME,
        (configSTACK_DEPTH_TYPE)TASK4_STACK_DEPTH,
        (void *)NULL,
        (UBaseType_t)TASK4_PRIORITY,
        &task4_handler);改写task3和书写task4的函数体
void Task3(void *pvParameters)
{
    while (1)
    {
        // printf("Task3 正在运行...\n");
        // 检测按键,如果key1按下就挂起Task1,如果key2按下就恢复Task1
        uint8_t key = Key_Detect();
        if (key == KEY1_PRESS)
        {
            printf("挂起 Task1 任务...\n");
            vTaskSuspend(task1_handler);
        }
        else if (key == KEY2_PRESS)
        {
            printf("恢复 Task1 任务...\n");
            vTaskResume(task1_handler);
        }
        
        vTaskDelay(10);
    }
}
// 定义用于接收任务列表信息的缓冲区
char buff[1024];
// Task4函数体:查看任务状态列表
void Task4(void *pvParameters)
{
    while (1)
    {
        printf("Task4 运行,查询任务列表...\n");
        vTaskList(buff);
        printf("%s", buff);
        vTaskDelay(1000);
    }
}


















![62,【2】 BUUCTF WEB [强网杯 2019]Upload1](https://i-blog.csdnimg.cn/direct/e34fed7c158947029d4ce6772ded2a62.png)