STM32 HAL freertos零基础(二)-通过STM32CubeMX配置Freertos后在程序中进行任务创建,便于任务管理与识别。

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 __cplusplus
 extern "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);

 测试结果:

上文如有错误恳请各位大佬指正! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值