1、简介
通过STM32CubeMX配置Freertos后,建立的任务都在freertos.c文件中,不易于观察,并且每次生成新任务还需要打开STM32CubeMX,本次教程讲解一种通过STM32CubeMX配置Freertos后在程序中进行任务创建,起到类似添加传感器建立新的文件的效果。
2、文件添加
在源文件目录中建立Thread文件:
接着在Thread文件中建立Src、Inc文件分别建立新的线程MainThread.cpp、MainThread.h文件:
3、 Keil 5程序设计
3.1 MainThread.cpp文件添加
/********************************************************************************* File Name : MainThread.cpp* Description : 主控制线程******************************************************************************* @attention*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "MainThread.h"/* Functions -----------------------------------------------------------------*//*** @brief 主线程函数(应用层)* @retval None*/
void MainTask(void *argument){
// while(1){osDelay(4);}
}
/** * @brief 主控制线程初始化* @retval None*/
void MainThread_Init(void){const osThreadAttr_t MainTask_attributes = {"MainTask",0,0,0,0,128,(osPriority_t) osPriorityNormal};osThreadNew(MainTask, NULL, &MainTask_attributes);//创建主线程
}/**********************************END OF FILE*********************************/
3.2 MainThread.h文件添加
/********************************************************************************* File Name : MainThread.h* Description : ******************************************************************************* @attention*******************************************************************************//* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MainThread_H
#define __MainThread_H
#ifdef __cplusplusextern "C" {
#endif/* Includes ------------------------------------------------------------------*/
#include "main.h"#include "cmsis_os.h"
#include "FreeRTOS.h"
#include "task.h" void MainThread_Init(void); #ifdef __cplusplus
}
#endif
#endif/*** @}*//*** @}*//**********************************END OF FILE***********************************/
4、线程的建立与初始化
在源文件中对线程的名称进行设定,例如本次建立的任务命名为MainTask,仅仅需要对MainThread_Init()函数在main.c中进行初始化即可建立MainTask任务。
4.1 头文件添加
#include "MainThread.h"
4.2 任务初始化
4.3 任务测试
HAL_UART_Transmit(&huart1,(uint8_t *)"MainTask任务\r\n",12,0xFFFF);osDelay(400);
测试结果:
上文如有错误恳请各位大佬指正!