RT-thread Nano移植



一、添加Nano软件包

RT-Thread Nano软件包地址:https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc

打开CubeMX,选择Help下的Manage embedded software packages:

在这里插入图片描述


选择From Url...:
在这里插入图片描述


点击New,并添加上述的Nano软件包地址https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc

在这里插入图片描述


勾选并OK后,成功:
在这里插入图片描述


同时,安装RT-Thread:

在这里插入图片描述


同意:
在这里插入图片描述


安装成功:
在这里插入图片描述



二、新建工程


在这里插入图片描述


RCC配置:
在这里插入图片描述


SYS设置:
在这里插入图片描述


时钟树设置:
在这里插入图片描述


选择组件:
在这里插入图片描述


选择RT-Thread组件,OK:
在这里插入图片描述


将选择的模块进行勾选:
在这里插入图片描述

NVIC配置:
在这里插入图片描述


生成代码:
在这里插入图片描述
在这里插入图片描述



三、代码编写


添加新文件:
在这里插入图片描述


添加.c文件:
在这里插入图片描述


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);
	}
}

修改board.c的77行:
在这里插入图片描述


rtconfig.h的145行取消注释:
在这里插入图片描述


main.c中添加代码:

extern void MX_RT_Thread_Init(void);
extern void MX_RT_Thread_Process(void);

在这里插入图片描述


while循环中添加以下代码:
在这里插入图片描述

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


参考

STM32的RT-Thread-Nano移植

基于 STM32CubeMX 添加 RT-Thread 操作系统组件(一)- 详细介绍操作步骤

猜你喜欢

转载自blog.csdn.net/weixin_46628481/article/details/121914832