RT-thread Nano移植

RT-thread Nano移植



一、添加Nano软件包

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

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

RT-thread Nano移植


选择From Url...:
RT-thread Nano移植


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

RT-thread Nano移植


勾选并OK后,成功:
RT-thread Nano移植


同时,安装RT-Thread:

RT-thread Nano移植


同意:
RT-thread Nano移植


安装成功:
RT-thread Nano移植



二、新建工程


RT-thread Nano移植


RCC配置:
RT-thread Nano移植


SYS设置:
RT-thread Nano移植


时钟树设置:
RT-thread Nano移植


选择组件:
RT-thread Nano移植


选择RT-Thread组件,OK:
RT-thread Nano移植


将选择的模块进行勾选:
RT-thread Nano移植

NVIC配置:
RT-thread Nano移植


生成代码:
RT-thread Nano移植
RT-thread Nano移植



三、代码编写


添加新文件:
RT-thread Nano移植


添加.c文件:
RT-thread Nano移植


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行:
RT-thread Nano移植


rtconfig.h的145行取消注释:
RT-thread Nano移植


main.c中添加代码:

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

RT-thread Nano移植


while循环中添加以下代码:
RT-thread Nano移植

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


参考

STM32的RT-Thread-Nano移植

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

上一篇:Freertos Trace任务可视化分析(三)互斥量 SystemView


下一篇:函数指针数组