Keil 下搭建 RT-Thread 最小系统工程
本文所使用的方法是非常传统的 ,只适用于非常简单的工程建立,用于初学者了解 RT-Thread 最小系统工程的建立,不建议在实际开发中使用该方式。
实际开发中推荐使用 env 和 scons,这部分将不在本部分说明,建议读者在熟悉 RT-Thread 内核后再去学习 scons 使用。
ST 的 STM32 系列芯片,官方网站上为开发者提供了非常方便的开发库。到目前为止,有标准外设库 (STD 库)、HAL 库、LL 库 三种。前两者都是常用的库,后面的 LL 库是 ST 最近才添加,随 HAL 源码包一起提供,目前支持的芯片也偏少。其中,STD 库和 HAL 库两者相互独立,互不兼容。LL 库和 HAL 库两者相互独立,只不过 LL 库更底层。而且,部分 HAL 库会调用 LL 库(例如:USB 驱动)。同样,LL 库也会调用 HAL 库 。这里,笔者将使用 STM32F1xx 系列的 HAL 固件库建立最小工程。我们从官网下载 ,这个软件包里就包含了我们需要的 HAL 库。
下载 RT-Thread 最新版本的源码
RT-Thread 是完全开源、开放的物联网操作系统,可以从官网下载相关的源代码和辅助开发工具。RT-Thread 项目源代码都保存在 Git 仓库中; 您可以将源文件下载为 tar.gz 文件,或者使用 Git 克隆和检出命令:
- 国外 github:https://github.com/RT-Thread/rt-thread;
- 国内 gitee: ;
由于国外服务器 github 速度较慢,建议从 gitee 上下载,也可以选择从备份的网盘中下载 RT-Thread 发布的各个版本源代码:- 百度网盘:https://pan.baidu.com/s/1mgIAyWo#list/path=%2F
我们先建立 4 个文件夹并命名如下,将之前下载到的固件库和 RT-Thread 源码提取部分需要的文件,拷贝并按照下面的文件夹结构重新组织文件。
在动手之前,先对上面的文件夹结构做个简短的说明:
具体的拷贝内容如下: - 根目录:从 RT-Thread 源码的目录里 rt-thread-3.0.3\bsp\stm32f10x-HAL\ 里复制 rtconfig.h
文件。rtconfig.h
:RT-Thread 的配置文件,通过宏定义打开 / 关闭各功能组件。
Libraries:把下载的固件库里的 Libraries 文件夹里的内容全部放到我们建立的 Libraries 文件夹下。
applications:从 rt-thread-3.0.3\bsp\stm32f10x-HAL\applications 文件中复制 main.c 文件到我们的建立的文件夹 applications 中。
搭建最小系统工程
MDK 中新建工程
从 MDK 中新建工程项目,并选择保存在我们建立的根目录下:
选择所使用的具体芯片型号后点击 “OK” 确定选择:
修改工程属性,并建立分组:
在上一小节中新建的分组里添加文件,详见下表:
groups | 需要添加的文件 |
---|---|
Applications | 暂不添加文件。 |
Drivers | drivers 文件夹下的board.c 、drv_usart.c 、stm32f1xx_it.c 文件。 |
STM32_HAL | 官方固件库下的:Libraries\STM32F1xx_HAL_Driver 文件夹中除了stm32f1xx_hal_msp_template.c 、stm32f1xx_hal_timebase_tim_template.c 、stm32f1xx_hal_timebase_rtc_alarm_template.c 这三个文件外的所有.c文件;Libraries\CMSIS\Device\ST\STM32F1xx\Source\Templates 目录下的文件;Libraries\CMSIS\Device\ST\STM32F1xx\Source\Templates\arm 目录下的startup_stm32f103xe.s 文件。 |
Kernel | rt-thread\src 目录下的所有.C文件 |
CORTEX-M3 | rt-thread\libcpu\arm 目录下common 文件夹中backtrace.c ,div0.c 和showmem.c 文件;目录cortex-m3 下的context_rvds.S 和cpuport.c 文件。 |
DeviceDrivers | 目录下src 和serial 两个文件夹中的所有.C文件 |
finsh | rt-thread\components\finsh 目录下的所有.C文件。 |
libc | rt-thread\components\libc\compilers\armlibc 目录下的所有.C文件。 |
添加包含文件路径
添加完文件,接下来在项目设置里的 C/C++
页里的 Include Path
添加这些源文件包含的头文件的路径。
在下图所示区域设置器件类型和制定使用 stm32 固件库:USE_HAL_DRIVER, STM32F103xE
。
设置好之后编译无错误。
如下图,选择软件仿真后点 OK
确定:
仿真运行,命令窗口有错误输出:
这个错误是由 rtconfig.h
里设置的芯片和刚开始我们建立工程时所选器件型号不一致,导致的存储器地址访问超范围。将定义改为:
再次编译运行无错误:
再次重申本文所使用的方法仅用于初学者了解 RT-Thread 最小系统工程的建立,不建议在实际开发中使用该方式。
原文: