STM32完美移植RT-Thread实时操作系统

STM32完美移植RT-Thread实时操作系统
官网下载RT-Thread nano:下载 - RT-Thread物联网操作系统
解压打开下载文件夹
打开自己的裸板文件夹
在这里插入图片描述

在自己的裸板文件夹中新建RT-THREAD,在RT-THREAD下新建RT-include、RT-port、RT-source(名字自己定)
在这里插入图片描述

再打开USER新建boaed文件夹
在这里插入图片描述

下面开始复制相关文件
打开RT-Thread——bsp——stm32f103-msh——RTE——RTOS——复制board.c和rtconfig.h到自己的文件夹USER——board下
在这里插入图片描述

在USER——board下新建board.h

打开下载文件夹的src——复制全部文件到自己文件夹RT-Thread——RT-source下
在这里插入图片描述

打开下载文件的libcpu——arm——cortex-m3下复制context_rvds.S和cpuport.c文件到自己文件夹的RT-Thread——RT-port下
在这里插入图片描述

打开下载文件的include下复制全部文件到RT-Thread——RT-include下
再打开下载文件的components下复制两个文件夹到RT-Thread——RT-include下
在这里插入图片描述
在这里插入图片描述

至此所有文件复制完毕

打开工程添加文件
点击 在这里插入图片描述

先添加如下文件夹
在这里插入图片描述

在USER下添加 在这里插入图片描述

在RT-port下添加 在这里插入图片描述

在RT-source下添加 在这里插入图片描述

在RT-include下添加所有刚刚建立文件夹下的文件,包括复制过来的两个文件夹下的文件
在这里插入图片描述

再点击 在这里插入图片描述

选择C/C++
添加路径
在这里插入图片描述

打开stm32f1xx_it下找到如下函数,屏蔽
在这里插入图片描述

在这里插入图片描述

打开board.c找到如图函数
在这里插入图片描述

点击SystemCoreClock找到本体更改合适频率系统频率
在这里插入图片描述

再把系统时钟函数添加到此函数中
在这里插入图片描述

打开更改建立的board.h添加如下代码(sys.h中是系统时钟频率初始化和头文件#include “stm32f1xx.h”)然后在board.c下添加头文件#include “board.h”
在这里插入图片描述

再打开rtconfig.h更改相关参数,根据需要改
#define RT_THREAD_PRIORITY_MAX 8

//表示 RT-Thread 支持多少个优先级,取值范围为 8~256,默认为 32。

#define RT_TICK_PER_SECOND 1000

//表示操作系统每秒钟有多少个 tick即是操作系统的时钟周期,默认为 1000,即操作系统的时钟周期 tick 等于 1ms。

#define RT_ALIGN_SIZE 4

//表示 CPU 处理的数据需要多少个字节对齐,默认为 4 个字节

#define RT_NAME_MAX 8
//表示内核对象名字的最大长度,取值范围为 2~16,默认为 8。

#define RT_USING_COMPONENTS_INIT

//RT-Thread 组件初始化,默认使能

#define RT_USING_USER_MAIN

//使用用户 main 函数,默认打开

#define RT_MAIN_THREAD_STACK_SIZE 512

// main 线程栈大小,取值范围为 1~4086,单位为字节,默认为512
#define RT_DEBUG_INIT 0

//调试配置。包括了内核调试配置,组件调试配置和线程栈溢出检测,目前全部关闭

#define RT_USING_TIMER_SOFT 0

//软件定时器配置,目前关闭,不使用软件定时器

#define RT_USING_SEMAPHORE

//内部通信配置,包括信号量、互斥量、事件、邮箱和消息队列,根据需要配置

#define RT_USING_SMALL_MEM

//内存管理配置
参考网址:http://forum.eepw.com.cn/thread/316958/1/
#define RT_USING_CONSOLE

//控制台配置。控制台即是 rt_kprintf()函数调试输出的设备,通常使用串口。

修改board.c,board.c 是直接从 RT-Thread/3.0.3/bsp 文件夹下面拷贝过来的, 里面存放的是与硬件相关的初始化函数,

static uint32_t _SysTick_Config(rt_uint32_t ticks)

//相关的寄存器定义和初始化函数,这个是跟处理器相关的,直接使用固件库函数,将其注释。

void *rt_heap_begin_get(void) void *rt_heap_end_get(void)

//RT-Thread 堆配置,如果同时定义了 RT_USING_USER_MAIN 和RT_USING_HEAP 这两个宏, 表示 RT-Thread 里面创建内核对象时使用动态内存分配方案。

void rt_hw_board_init()

//RT-Thread 启动的时候会调用一个名为 rt_hw_board_init()的函数,从函数名称我们可以知道它是用来初始化开发板硬件的,比如时钟,比如串口等。

void SysTick_Handler(void)

//SysTick 中断服务函数是一个非常重要的函数, RT-Thread 所有跟时间相关的事情都在里面处理。

找到finsh_port.c屏蔽//#error “TODO 4: Read a char from the uart and assign it to ‘ch’.”

然后编译,没有问题

最后在主函数下添加头文件 在这里插入图片描述

OK,可以完美使用

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值