(实践指南)基于Keil手动移植RT-Thread Nano到STM32F103C8T6并集成FinSH组件

1. 环境准备与芯片配置

在开始移植RT-Thread Nano之前,我们需要先准备好开发环境。我使用的是Keil MDK 5.38版本,芯片是STM32F103C8T6,也就是我们常说的"蓝 pill"板。这个芯片有64KB Flash和20KB RAM,对于运行RT-Thread Nano来说完全足够。

首先需要确保你已经安装了STM32F1系列的Device Pack。如果没有安装,可以在Keil的Pack Installer中搜索"STM32F1"并安装。我建议使用STM32CubeMX生成一个基础的工程模板,这样能确保所有外设的初始化代码都是正确的。不过如果你喜欢手动配置,也可以直接从空工程开始。

芯片配置有几个关键点需要注意。STM32F103C8T6属于中等容量产品,所以在Device中要选择STM32F103C8,而不是HD版本的大容量型号。这个细节很重要,因为不同容量的芯片其启动文件和库函数配置都有差异。

在C/C++选项卡的Define中,要确保定义了STM32F10X_MD和USE_STDPERIPH_DRIVER。这两个宏定义决定了编译器使用哪个型号的库文件。我曾经在这里踩过坑,错误地定义了HD版本,导致程序运行时出现各种奇怪的问题。

调试器的配置也很重要。我使用的是ST-Link V2,在Debug选项卡中选择ST-Link Debugger,然后在Settings中确认SWD接口正确识别。如果调试时卡在启动文件里出不来,很可能是这里的配置有问题。

2. 创建基础工程

我建议从一个最简单的LED闪烁程序开始移植。这样能确保底层硬件驱动是正常的,后续移植RTOS时如果出现问题,可以排除硬件驱动的问题。

先创建一个新的Keil工程,选择STM32F103C8作为目标芯片。然后添加启动文件,这里要特别注意:STM32F103C8T6需要使用startup_stm32f10x_md.s这个启动文件,而不是hd版本。如果你用的是标准外设库,需要从库文件中找到正确的启动文件。

接下来配置系统时钟。STM32F103C8T6最高可以运行在72MHz,我们需要在system_stm32f10x.c中正确配置PLL参数。我一般使用外部8MHz晶振,通过9倍频得到72MHz的系统时钟。当然,如果你没有外部晶振,也可以使用内部RC振荡器,但精度会差一些。

GPIO配置相对简单,但要注意时钟使能。STM32的外设时钟都需要先使能才能使用。我遇到过因为忘记使能GPIO时钟而导致IO口无法工作的坑,所以现在养成了在初始化函数开头就先使能时钟的习惯。

串口配置是后续使用FinSH的关键。我使用USART1,引脚是PA9(TX)和PA10(RX),波特率设置为115200。记得要开启串口中断,这样FinSH才能接收用户输入。在NVIC中设置合适的中断优先级,我一般设置为2或3。

3. 添加RT-Thread Nano内核

现在开始添加RT-Thread Nano内核。有两种方法可以添加:一是通过Keil的RTE环境自动添加,二是手动下载源码并添加到工程中。我推荐手动添加,因为这样能更好地理解整个系统的结构。

首先去RT-Thread官网下载Nano版本的最新源码。我使用的是3.1.5版本,这个版本比较稳定。下载后解压,你会看到几个重要的文件夹:include(头文件)、libcpu(CPU相关代码)、src(内核源码)。

在工程中新建一个组命名为RT-Th

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值