STM32F103C8移植RT_Thread

本文详细介绍了如何在STM32平台使用CubeMX安装Nanopack,配置RT-Thread以及实现LED灯任务。包括软件包获取、CubeMX组件选择、代码修改等内容,并提供了参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、准备工作

CubeMX 安装Nano pack
1.官方下载参考
官方网站CubeMX 安装Nano pack参考?
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-nano/nano-port-cube/an0041-nano-port-cube
2.具体步骤
(1)获取软件包地址
要获取 RT-Thread Nano 软件包,需要在 CubeMX 中添加
https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc
(2)打开 CubeMX,从菜单栏 help 进入 Manage embedded software packages 界面,点击 From Url 按钮,进入 User Defined Packs Manager 界面,其次点击 new,填入上述网址,然后点击 check
在这里插入图片描述

在这里插入图片描述
(3)下载安装完成后如下,前面的勾选框变为绿色(下载一个3.1.5即可)
在这里插入图片描述

二、CubeMX配置建立文件

一、选择 Nano 组件
1、点击 Softwares Packages->Select Components,进入组件配置界面
在这里插入图片描述
2、选择 RealThread, 然后根3.1.5版本的,然后点击 OK 按钮
在这里插入图片描述
3、Software Packs展开就可以看见添加的RealThread.RT_Thread,勾选相应内容
在这里插入图片描述
4、RCC配置
在这里插入图片描述
5、SYS配置
在这里插入图片描述
6、USART1配置
在这里插入图片描述
7、GPIO选择A3,A4串口,用来点亮LED灯
在这里插入图片描述
8、NVIC选择,红框的不勾选
在这里插入图片描述9、时钟树配置
在这里插入图片描述
10、生成项目
在这里插入图片描述

在这里插入图片描述

三、代码修改实现

1、创建任务

主要是两个LED灯任务,一个每0.5秒变化一次,一个每1秒变化一次。
在Application/USER文件夹下新建app_rt_thread.c文件,并添加以下代码
在这里插入图片描述

#include "rtthread.h"
#include "main.h"
#include "stdio.h"
 
struct rt_thread led1_thread;
rt_uint8_t rt_led1_thread_stack[128];
void led1_task_entry(void *parameter);
 
//初始化线程函数
void MX_RT_Thread_Init(void)
{
	//初始化LED1线程
	rt_thread_init(&led1_thread,"led1",led1_task_entry,RT_NULL,&rt_led1_thread_stack[0],sizeof(rt_led1_thread_stack),3,20);
	//开启线程调度
	rt_thread_startup(&led1_thread);
}
 
//主任务
void MX_RT_Thread_Process(void)
{
	printf("Hello RT_Thread!!!");
	rt_thread_delay(2000);
}
 
//LED1任务
void led1_task_entry(void *parameter)
{
	while(1)
	{
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_RESET);
		rt_thread_delay(500);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3, GPIO_PIN_SET);
		rt_thread_delay(500);
	}
}



2、找到Middlewares/RT-Thread/RTOS/kernel文件夹下的board.c文件,修改串口USART2为USART1
在这里插入图片描述
3、在Middlewares/RT-Thread/RTOS/kernel里添加rtconfig.h
在这里插入图片描述

在这里插入图片描述
去掉rtconfig.h中#include "finsh_config.h"的注释并添加相关宏定义:

#define RT_USING_FINSH

在这里插入图片描述
4、在main.c文件中添加代码:

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
extern void MX_RT_Thread_Init(void);
extern void MX_RT_Thread_Process(void);
 
/* USER CODE END PTD */


5、在main函数里添加如下代码

  MX_RT_Thread_Init();

while循环中添加代码

HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4);
		rt_thread_delay(1000);


四、效果展示

五、参考案例

https://blog.csdn.net/weixin_56102526/article/details/121952050
https://blog.csdn.net/weixin_46185705/article/details/122522318

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值