一。 前言
大家知道,RT-Thread 已经支持了各式各样的 BSP 了,以 STM32 为例,RT-Thread 针对市面上很多具体的某开发板制作了对应的 BSP,如 ST 官方开发板,正点原子系列开发板,野火系列开发板等,如下图所示:

不过,有人可能问,如果我的板子是自己 DIY 画板子制作的,或者说的公司内部自己的板子,并不是市面上卖的那种开发板,能否使用 RT-Thread 的 STM32 BSP 呢?答案是完全可以的,本文将教大家如何根据已有的 STM32 BSP 快速移植 RT-Thread 到自己的 STM32 开发板上。
根据已有 STM32 的 BSP 移植 RT-Thread 到自己的 STM32 开发板步骤分为以下几步:
1.拷贝一份芯片型号相似的 BSP
2.用 STM32CubeMX 配置时钟
3.修改串口号和 LED 引脚
二。 移植
1. 拷贝一份芯片型号相似的 BSP
假如自己手上的板子芯片型号是 STM32F407VGT6,那就在已有的 STM32 BSP 中找一份与 STM32F407VGT6 相似的 BSP ,stm32f407-atk-explorer 这个 BSP 使用的是 STM32F407ZGT6,可以说是与 STM32F407VGT6 最相似的了。复制一份,改名 stm32xxx - 厂商 - 开发板名,如 stm32f407-my-diy,如下图:

打开这个拷贝出来的 BSP 文件夹,打开工程,修改芯片型号,如下图:

2. 用 STM32CubeMX 配置时钟
打开 bspstm32stm32f407-my-diyboardCubeMX_ConfigCubeMX_Config.ioc 后:
2.1 首先重选芯片为STM32F407VGT6。
2.2 配置时钟源与时钟树:
1)HSI:高速内部时钟信号,stm32单片机内的时钟。
2)HSE:高速外部时钟信号精度高,来源:
① HSE外部晶体/陶瓷谐振器(晶振)。
② HSE用户外部时钟。
3)LSE:低速外部晶体32.768kHz,主要提供一个精确的时钟源 一般作为RTC时钟使用。

2.3 生成代码
1)点击 GENERATE CODE 按钮生成代码,新的代码会更新到 bspstm32stm32f407-my-diyboardCubeMX_ConfigSrc 中。
2.4 更新 board.c中的时钟配置函数
1)打开 bspstm32stm32f407-my-diyboardCubeMX_ConfigSrc 中的 main.c,复制 SystemClock_Config() 函数到 board.c,覆盖原本的 SystemClock_Config() 函数。

3. 修改串口号和 LED 引脚
3.1 在你自己的开发板上找一个可用的串口(如uart4),连接电脑。
3.2 通过 STM32CubeMX 打开相应的串口4,点击生成代码。
3.3 修改工程中的 rtconfig.h 文件中的 RT_CONSOLE_DEVICE_NAME 宏定义,并添加串口4的宏定义:
#define RT_CONSOLE_DEVICE_NAME “uart4” #define BSP_USING_UART#define BSP_USING_UART4
根据自己的板子修改 main.c 中的 LED 引脚:
#define LED0_PIN GET_PIN(D, 13)
3.4 编译下载:
1)板子的 LED 灯闪烁。
2)并通过串口终端查看打印的 RT-Thread logo 信息。
3)输入 help 可查看系统支持命令。
| /
- RT - Thread Operating System
/ | 4.0.2 build Aug 15 2019
2006 - 2019 Copyright by rt-thread team
msh 》
msh 》help
RT-Thread shell commands:
reboot - Reboot System
version - show RT-Thread version information
list_thread - list thread
list_sem - list semaphore in system
list_event - list event in system
list_mutex - list mutex in system
list_mailbox - list mail box in system
list_msgqueue - list message queue in system
list_mempool - list memory pool in system
list_timer - list timer in system
list_device - list device in system
help - RT-Thread shell help.
ps - List threads in the system.
time - Execute command with time.
free - Show the memory usage in the system.
msh 》
到此为止,RT-Thread 就成功的移植到自己的 STM32 开发板上啦!
三。 常见问题
1. 下载失败
在下载时可能遇到下载失败的问题,只需要将下载算法重新选择一次即可。

2. 编译报错
如,遇到串口驱动 drv_uart.c 报错 error:#20:identifier “UART_HandleTypeDef” is undefined.,是因为没有在 STM32CubeMX 中开启 UART。
解决方法:
在 STM32CubeMX 中开启 UART 并点击 GENERATE CODE 按钮重新生成代码。
懒得打开 STM32CubeMX 的话,也可以直接修改 boardCubeMX_ConfigIncstm32f4xx_hal_conf.h 文件,打开宏定义HAL_UART_MODULE_ENABLED即可:

一。 前言
大家知道,RT-Thread 已经支持了各式各样的 BSP 了,以 STM32 为例,RT-Thread 针对市面上很多具体的某开发板制作了对应的 BSP,如 ST 官方开发板,正点原子系列开发板,野火系列开发板等,如下图所示:

不过,有人可能问,如果我的板子是自己 DIY 画板子制作的,或者说的公司内部自己的板子,并不是市面上卖的那种开发板,能否使用 RT-Thread 的 STM32 BSP 呢?答案是完全可以的,本文将教大家如何根据已有的 STM32 BSP 快速移植 RT-Thread 到自己的 STM32 开发板上。
根据已有 STM32 的 BSP 移植 RT-Thread 到自己的 STM32 开发板步骤分为以下几步:
1.拷贝一份芯片型号相似的 BSP
2.用 STM32CubeMX 配置时钟
3.修改串口号和 LED 引脚
二。 移植
1. 拷贝一份芯片型号相似的 BSP
假如自己手上的板子芯片型号是 STM32F407VGT6,那就在已有的 STM32 BSP 中找一份与 STM32F407VGT6 相似的 BSP ,stm32f407-atk-explorer 这个 BSP 使用的是 STM32F407ZGT6,可以说是与 STM32F407VGT6 最相似的了。复制一份,改名 stm32xxx - 厂商 - 开发板名,如 stm32f407-my-diy,如下图:

打开这个拷贝出来的 BSP 文件夹,打开工程,修改芯片型号,如下图:

2. 用 STM32CubeMX 配置时钟
打开 bspstm32stm32f407-my-diyboardCubeMX_ConfigCubeMX_Config.ioc 后:
2.1 首先重选芯片为STM32F407VGT6。
2.2 配置时钟源与时钟树:
1)HSI:高速内部时钟信号,stm32单片机内的时钟。
2)HSE:高速外部时钟信号精度高,来源:
① HSE外部晶体/陶瓷谐振器(晶振)。
② HSE用户外部时钟。
3)LSE:低速外部晶体32.768kHz,主要提供一个精确的时钟源 一般作为RTC时钟使用。

2.3 生成代码
1)点击 GENERATE CODE 按钮生成代码,新的代码会更新到 bspstm32stm32f407-my-diyboardCubeMX_ConfigSrc 中。
2.4 更新 board.c中的时钟配置函数
1)打开 bspstm32stm32f407-my-diyboardCubeMX_ConfigSrc 中的 main.c,复制 SystemClock_Config() 函数到 board.c,覆盖原本的 SystemClock_Config() 函数。

3. 修改串口号和 LED 引脚
3.1 在你自己的开发板上找一个可用的串口(如uart4),连接电脑。
3.2 通过 STM32CubeMX 打开相应的串口4,点击生成代码。
3.3 修改工程中的 rtconfig.h 文件中的 RT_CONSOLE_DEVICE_NAME 宏定义,并添加串口4的宏定义:
#define RT_CONSOLE_DEVICE_NAME “uart4” #define BSP_USING_UART#define BSP_USING_UART4
根据自己的板子修改 main.c 中的 LED 引脚:
#define LED0_PIN GET_PIN(D, 13)
3.4 编译下载:
1)板子的 LED 灯闪烁。
2)并通过串口终端查看打印的 RT-Thread logo 信息。
3)输入 help 可查看系统支持命令。
| /
- RT - Thread Operating System
/ | 4.0.2 build Aug 15 2019
2006 - 2019 Copyright by rt-thread team
msh 》
msh 》help
RT-Thread shell commands:
reboot - Reboot System
version - show RT-Thread version information
list_thread - list thread
list_sem - list semaphore in system
list_event - list event in system
list_mutex - list mutex in system
list_mailbox - list mail box in system
list_msgqueue - list message queue in system
list_mempool - list memory pool in system
list_timer - list timer in system
list_device - list device in system
help - RT-Thread shell help.
ps - List threads in the system.
time - Execute command with time.
free - Show the memory usage in the system.
msh 》
到此为止,RT-Thread 就成功的移植到自己的 STM32 开发板上啦!
三。 常见问题
1. 下载失败
在下载时可能遇到下载失败的问题,只需要将下载算法重新选择一次即可。

2. 编译报错
如,遇到串口驱动 drv_uart.c 报错 error:#20:identifier “UART_HandleTypeDef” is undefined.,是因为没有在 STM32CubeMX 中开启 UART。
解决方法:
在 STM32CubeMX 中开启 UART 并点击 GENERATE CODE 按钮重新生成代码。
懒得打开 STM32CubeMX 的话,也可以直接修改 boardCubeMX_ConfigIncstm32f4xx_hal_conf.h 文件,打开宏定义HAL_UART_MODULE_ENABLED即可:

举报