rt-thread驱动篇(01)---STM32F429板卡BSP制作

本文详细介绍了如何制作RT-Thread针对STM32的BSP,包括复制通用模板、使用CubeMX配置工程、修改链接脚本、更新board.c/h、Kconfig选项、构建脚本和工程模板,最后进行BSP验证。教程以STM32F429IGT6为例,适用于自定义开发板或类似硬件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、BSP框架

二、BSP制作

1、复制通用模板

 2、使用 CubeMX 工具配置工程 

 3、修改链接脚本

 4、修改board.c/h

 5、修改 Kconfig 选项

6、修改构建脚本

7、修改工程模板

8、重新生成工程

 三、BSP验证


前言

  1. RT-Thread针对STM32系列有一套通用的BSP制作方法,引入了CubeMX工具,用来对BSP中使用的外设引脚进行图形化配置;还提供了多系列的参考模板以及常见厂商的开发板的BSP工程
  2. 此次制作的BSP使用的板卡我司自己开发的板卡,不方便放上来,但是是仿的正点原子阿波罗开发板,外设都差不多,单片机型号为429IGT6,大家看的时候可以参考阿波罗开发板硬件
  3. 整个驱动篇的源码可以私聊我或是从这里下载

一、BSP框架

RT-Thread针对STM32系列通用的BSP

 每一个 STM32 系列的 BSP 由三部分组成,分别是通用库、BSP 模板和特定开发板 BSP,下面的表格以 F1 系列 BSP 为例介绍这三个部分:

项目

文件夹

说明

通用库

stm32/libraries

用于存放 HAL 库以及基于 HAL 库的多系列通用外设驱动文件

F1 系列 BSP 工程模板

stm32/libraries/templates/stm32f10x

F1系列 BSP 模板,可以通过修改该模板制作更多 F1系列 BSP

特定开发板 BSP

stm32/stm32f103-atk-nano

在 BSP 模板的基础上修改而成

二、BSP制作

制作步骤:

  1. 复制通用模板
  2. 使用 CubeMX 工具配置工程
  3. 修改链接脚本
  4. 修改board.c/h
  5. 修改 Kconfig 选项
  6. 修改构建脚本
  7. 修改工程模板
  8. 重新生成工程

需要修改的文件:

项目

需要修改内容说明

CubeMX_Config (文件夹)

CubeMX 工程

linker_scripts (文件夹)

BSP特定的链接脚本

board/board.c/h

系统时钟、GPIO初始函数、芯片存储器大小

board/Kconfig

芯片型号、系列、外设资源

board/SConscript

芯片启动文件、目标芯片型号

1、复制通用模板

\bsp\stm32\libraries\templates文件夹下的 stm32f4xx BSP模板拷贝到\bsp\stm32目录下!!!!

 2、使用 CubeMX 工具配置工程 

打开 \board\CubeMX_Config 中的CubeMX_Config.ioc工程,根据所需要配置的硬件板卡进行如下修改:

(1)选择芯片为STM32F429IGTx

(2)打开外部时钟、设置下载方式、打开串口外设(注意只需要选择串口外设引脚即可,无需配置其他参数)

 (3)配置系统时钟:

 (4)设置项目名称,并在指定地址重新生成 CubeMX 工程:

 3、修改链接脚本

\board\linker_scripts 文件夹下分别存放了MDK、IAR、GCC三种编译器的链接脚本link.sct、link.icf、link.lds。我们使用的是IAR,所以需要修改link.icf文件

STM32F429IGT6的FLASH为1MByte;RAM大小分别256KByte,其中包含了64KByte的CCM data RAM(core coupled memory),而CCM在F4中只连接到了数据总线上,只能被CPU访问不能直接被DMA访问且只能存放数据,所以这里只使用了192KByte的SRAM1区。如果想使用CCM可参考:链接

 4、修改board.c/h

(1)将 \board\CubeMX_Config\Src\main.c 中CubeMX生成的系统时钟初始化函数 SystemClock_Config() 拷贝到 board.c

(2)修改board.h

 5、修改 Kconfig 选项

\board\Kconfig 中主要需要修改 芯片型号和系列、BSP的外设支持选项(基础工程仅需支持GPIO驱动和串口驱动即可)

 kconfig语句分析:

(1)config 语句表示一个配置选项的开始,紧跟着的 BSP_USING_COM7 是配置选项的名称,config 下面几行定义了该配置选项的属性。属性可以是该配置选项的 类型、输入提示、依赖关系、 默认值、帮助信息:

  1. bool 表示配置选项的类型,每个 config 菜单项都要有类型定义,变量有5种类型。

    (1)bool 布尔类型

    (2)tristate 三态类型

    (3)string 字符串

    (4)hex 十六进制

    (5)int 整型

  2. select 是反向依赖关系的意思,即当前配置选项被选中,则RT_USING_UART就会被选中
  3. default 表示配置选项的默认值,bool 类型的默认值可以是 y/n

(2)menu/endmenu 语句用于生成菜单

(3)if/endif 语句是一个条件判断

(4)menuconfig 语句表示带菜单的配置项

(5) depends on 表示依赖某个配置选项

(6)source 语句用于读取另一个文件中的 Kconfig 文件

在上述所以选项被选中后,会在rtconfig.h中生成如下宏:

#define SOC_STM32F429IG
#define SOC_SERIES_STM32F4
#define RT_USING_COMPONENTS_INIT
#define RT_USING_USER_MAIN

#define BSP_USING_COM7
#define BSP_USING_UART
#define BSP_USING_UART7

#define BSP_USING_GPIO
#define RT_USING_PIN
#define RT_USING_SERIAL
#define BSP_UART7_RX_USING_DMA

6、修改构建脚本

\board\SConscript 脚本决定 MDK/IAR 工程的生成以及编译过程中要添加的文件。在这一步中需要修改芯片型号以及芯片启动文件的地址,修改内容如下图所示:

 STM32F429xx 宏标识会在stm32f4xx.h中作为宏条件判断,包含目标芯片的头文件

7、修改工程模板

template 文件是生成 MDK/IAR 工程的模板文件,通过修改该文件可以设置工程中使用的芯片型号以及下载方式

8、重新生成工程

在 env 中输入 menuconfig 对工程进行配置,生成新的 rtconfig.h 文件。如下图所示:

 使用 env 中输入命令 scons --target=mdk5/mdk4/iar 重新生成MDK5/MDK4/IAR工程

 三、BSP验证

(1)BSP制作完成生成目标工程后,修改main.c中的 LED0_PIN 的引脚

/* defined the LED0 pin: PH2 */
#define LED0_PIN    GET_PIN(H, 2)

(2)使用 scons --dist 生成一个独立的BSP,此命令会在 BSP 目录下生成 dist 目录,dist中的工程可拷贝到任何目录下

 (3)连接shell使用com口(UART7),使用IAR编译下载到板卡,会打印出RTT信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值