STM32F103系列移植rtthread3.1.3完整版详细过程

Posted 弓长于水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F103系列移植rtthread3.1.3完整版详细过程相关的知识,希望对你有一定的参考价值。

这段时间在学习rtthread,在移植的过程中遇到挺多问题,现在对移植3.1.3版本做一个移植记录


本人申明,整个文章过程都是本人亲自走过一边,有不懂的地方可以私信,感谢支持


移植前准备:Keil5、STM32CubeMX、ENV工具


1、获取源码

源码获取的渠道主要是从官方提供的链接下载,主要渠道有码云、GitHub、百度云等
下载链接:下载 - RT-Thread物联网操作系统
选择源代码下载,在以下链接中下载rtthread3.1.3版本


2、复制模板

本文主要使用STM32系列的stm32cbt6进行rtthread移植,进入下载好的源码文件夹,打开以下路径 rt-thread\\bsp\\stm32\\libraries\\templates
选择stm32f10x文件夹复制到rt-thread\\bsp\\stm32路径下


3、搭建工程

3.1 STM32CubeMX配置

打开复制的模板下的board\\CubeMX_Config路径下找到CubeMX_Config.ico文件,使用STM32CubeMX打开对工程项目进行配置

首先我们需要选择自己开发板所对应的芯片,我使用的是STM32F103CBT6,于是选择对应的芯片

接下来就是对需要的引脚进行选择配置,最基本的需要时钟、串口以及打开SWD下载模式

然后便是时钟配置,我们直接在HCLK时钟处填写最大时钟就行了,系统将自动配置

第三步就是项目工程配置

工程配置中其他的应该都没有问题,但是我们使用的STM32 hal库需要是1.7.0版本的,不能使用最新的版本,否则finsh组件没法启用,版本更改的办法如下:

下载好1.7.0版本以后就可以在库的选择中看到1.7.0版本了。
最后点击生成代码覆盖原有的工程就好了。

3.2 Board文件修改

接下来的修改复制于官方文档

3.2.1修改board.c

在 board.c 文件中存放了函数 SystemClock_Config(),该函数负责初始化系统时钟。当使用 CubeMX 工具对系统时钟重新配置的时候,需要更新这个函数。
该函数由 CubeMX 工具生成,默认存放在board/CubeMX_Config/Src/main.c 文件中。但是该文件并没有被包含到我们的工程中,因此需要将这个函数从 main.c 中拷贝到 board.c 文件中。在整个 BSP 的制作过程中,这个函数是唯一要要拷贝的函数。

3.2.2修改board.h
3.2.3修改 Kconfig 选项
3.2.4修改链接脚本

使用MDK只需要修改link.sct即可

3.2.5修改构建脚本SConscripy
3.2.6修改工程模板

主要修改芯片信息即可,后续的下载方式以及编译关联可以在项目工程中临时更改。

3.3 ENV重新生成工程

打开ENV,进入到工程文件夹下,输入命令 menuconfig 对工程进行配置,并生成新的 rtconfig.h 文件。如下图所示:

确定串口打开以后就可以按ESC退出,系统会提示是否保存,确定即可
再使用 env 工具输入命令 scons --target=mdk5重新生成工程,出现以下提示即成功生成

随后可以打开工程项目,编译程序,可能会出现以下问题:

提示stm32f1xx_hal_exti.h不存在,我们双击报错文件夹名即可定位到代码处,注释掉这段代码即可:

将程序下载至芯片中,连接串口就可以看到以下界面:

以上是关于STM32F103系列移植rtthread3.1.3完整版详细过程的主要内容,如果未能解决你的问题,请参考以下文章

STM32F103系列移植rtthread3.1.3完整版详细过程

STM32F103系列移植rtthread3.1.3完整版详细过程

国民技术 MCU N32G45x与STM32F103系列差异对比及移植指导

FREERTOS移植(MDK STM32F103)

stm32f103各个型号芯片之间程序移植(stm32的兼容问题)

GD32F103学习笔记——在GD32F103移植STM32F103代码