移植RTT到STM32

移植RTT到STM32:准备一个工程包括LED驱动和串口驱动

1.首先到KEIL官网下载RTT软件包
在这里插入图片描述
2.把软件包的文件放在你准备的工程里面
在这里插入图片描述
3.打开工程,新建组,并把对应的文件添加进去
在这里插入图片描述
4.添加libcpu的时候,我用的是M4和MDK编译器,添加以下两个文件即可
在这里插入图片描述
5.添加路径
在这里插入图片描述
6.编译会发现有错误
在这里插入图片描述7.rtconfig.h文件中去掉#include “RTE_Components.h”
还有几个中断函数重复了,看错误提示删掉即可

在这里插入图片描述
8.新建一个board.h文件,把board.c文件里包含的头文件及main.h添加进去
在这里插入图片描述
9.把需要用到外设的初始化函数写入void rt_hw_board_init()函数里,先初始化串口
在这里插入图片描述

新建线程
  • 在main.c中,main函数前初始化任务句柄为NULL
  • 新建线程,并在main函数前声明
  • 创建一个线程对象并对其分配内存及优先级
  • 启动任务调度
  • 在线程里写你所需要实现的东西

代码如下:

#iinclude"mian.h"
void LED1(void *parg);
void LED2(void *parg);

rt_thread_t led1=RT_NULL;//初始化任务句柄为NULL
rt_thread_t led2=RT_NULL;

int main(void)
{
	led1=rt_thread_create("LED1",LED1,RT_NULL,512,3,20);
	led2=rt_thread_create("LED2",LED2,RT_NULL,512,3,20);
	if(RT_NULL!=led1)
	{
		rt_thread_startup(led1);//启动任务调度
	}
	else
	{
		return -1;
	}
	
	if(RT_NULL!=led2)
	{
		rt_thread_startup(led2);
	}
	else
	{
		return -1;
	}
	
	while(1)
	{
		
	}

}

void LED1(void *parg)//任务
{
	
	GPIO_ResetBits(GPIOH,GPIO_Pin_11);
	printf("点亮绿灯\n");
	while(1)
	{
		while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==KEY_ON))
		{
			GPIO_ToggleBits(GPIOH,GPIO_Pin_11);
			rt_thread_delay(100);
		}
	}
}

void LED2(void *parg)//任务
{
	
	GPIO_ResetBits(GPIOH,GPIO_Pin_12);
	printf("点亮蓝灯\n");
	while(1)
	{
		while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==KEY_ON)
		{
			GPIO_ToggleBits(GPIOH,GPIO_Pin_12);
			rt_thread_delay(200);
		}
	}
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值