RT-Thread 线程创建

文章主要是自我的学习笔记

代码实现

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 */
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值