文章主要是自我的学习笔记
代码实现
1 首先最重要的是去rtconfig.h中去掉#define RT_USING_HEAP的注释
2 创建Task.c 和Task.h文件
Task.c
#include "config.h"
#include "Task.h"
/*************************************************************************
* 变量定义
*************************************************************************
*/
static rt_thread_t led_thread;
/*************************************************************************
* 线程入口函数声明
*************************************************************************
*/
void led_thread_entry(void *parameter);
void TaskInit(void)
{
led_thread=rt_thread_create("ledThread", /* 线程名字 */
led_thread_entry, /* 线程入口函数 */
RT_NULL, /* 线程入口函数参数 */
256, /* 线程栈大小 */
2, /* 线程的优先级 */
10 /* 线程时间片 */
);
if(led_thread != RT_NULL)
{
rt_thread_startup(led_thread);
}
}
void led_thread_entry(void *parameter)
{
while(1)
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_6);
rt_thread_mdelay(2000);
// rt_kprintf("System Running Time:%d s \n",rt_tick_get()/RT_TICK_PER_SECOND);
}
}
Task.h
#ifndef _TASK_H_
#define _TASK_H_
void TaskInit(void);
void led_thread_entry(void *parameter);
#endif
config.h 利用这个头文件直接把常用的头文件都给放进去
#ifndef __CONFIG_H__
#define __CONFIG_H__
//无符号类型的定义
#define uchar unsigned char
#define uint unsigned int
#define uint8 unsigned char
#define uint16 unsigned short int
#define uint32 unsigned int
//----------------------------------------
//全局宏定义
#define CPU_INT_DISABLE() {__set_PRIMASK(1);} //关闭中断
#define CPU_INT_ENABLE() {__set_PRIMASK(0);} //打开中断
//全局类型定义
typedef enum{FALSE = 0, TRUE = !FALSE}BOOL;
//-------------------------------------
#ifdef MAIN_CONFIG //头文件被多个C调用时,避免变量冲突问题
#define EXT
#else
#define EXT extern
#endif
//-------------------------------------
//RTOS相关头文件包含
#include <rthw.h>
#include <rtthread.h>
#include "Task.h"//自定义文件,Task.c中存放线程、定时器、IPC等相关代码
//-------------------------------------
//常用头文件包含
#include "stm32g4xx_hal.h"
#include "stdio.h"
#include "string.h"
#include "math.h"
//-------------------------------------
//外设驱动头文件包含
#include "Gpio.h"
#include "USart.h"
//----------------------------------------
//全局变量定义,请使用EXT修饰
EXT unsigned char g_Var;
//----------------------------------------
#endif
/********************************************************************************************************
** End Of File
********************************************************************************************************/
主线程
TaskInit();//任务初始化
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
rt_thread_mdelay(1000);
/* USER CODE BEGIN 3 */
}