如何建立一个网站详细步骤,百度小说app,lumen 做企业网站,福州企业宣传片制作公司实验目标 学会vTaskSuspend( )、vTaskResume( ) 任务挂起与恢复相关API函数使用#xff1a; start_task:用来创建其他的三个任务。 task1#xff1a;实现LED1每500ms闪烁一次。 task2#xff1a;实现LED2每500ms闪烁一次。 task3#xff1a;判断按键按下逻辑#xff0c;KE…实验目标 学会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);#endif
FreeRTOS_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按下就恢复Task1uint8_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);}
}