新的 BSP 框架还引入了 CubeMX 工具,可以使用该工具来对 BSP 中使用的外设引脚进行配置。CubeMX 工具提供了图形化的配置界面,这种图形化的配置方式对开发者来说更加直观,不仅可以让开发者灵活地配置 BSP 中使用的资源,并且可以让开发者对资源的使用情况一目了然
框架
Hardware Drivers Config —>
OnBoard 板载
On-chip 片外
Board extend 拓展模块
选择需要的功能
pkgs --update 更新配置
scons --target=mdk5 生成MDK5
重点:
在 RT-Thread 中已经包含了一些测试例程 examples\test 目录内,需要测试驱动只要在 examples\test 启用对应测试文件即可
步骤一: rt-thread\bsp\stm32\选定的摸板目录\board\CubeMX_Config
利用 CubeMX 配置工程
步骤二: 修改同级目录下 Kconfig 文件
config BSP_USING_SPI2
bool “Enable SPI2 BUS”
select RT_USING_SPI
&emsp:default n
A depends on B 只有 B 被选中才能选 A
A select B A 选中就会选中 B
步骤三: env 启动 menuconfig
步骤四: 检查 Drivers\drv_spi.c 文件中有没有自己添加的相关内容
项目 | 内容 |
---|---|
CubeMX_Config | CubeMX 工程 |
linker_scripts | BSP 特定的链接脚本 |
board.c/h | 系统时钟/GPIO 初始化函数 / 芯片存储器大小 |
Kconfig | 芯片信型号/系类/外设资源 |
SConscript | 芯片启动文件/目标芯片型号 |
步骤一:先用 CubeMX 配置外部时钟 / 下载方式 / 串口
注意:修改地址以便生成 CubeMX 工程
步骤二:将 CubeMX_Config/Src/main.c 文件中 void SystemClock_Config(void)
函数拷贝到 board.c 文件中
步骤三:修改 STM32_FLASH_SIZE / STM32_SRAM_SIZE
举例
步骤四: RAM 中的一部分内存空间会被用作堆内存,
这里 HEAP_BEGIN 和 HEAP_END 的值需要和后面所修改的配置相一致
步骤五:修改 Kconfig 文件同添加外设一致
步骤六:修改链接脚本
6.1 board\linker_scripts
本次制作 BSP 使用的芯片为 STM32F103RB,FLASH 为 128k,因此修改 LR_IROM1 和 ER_IROM1 的参数为 0x00020000。RAM 的大小为20k, 因此修改 RW_IRAM1 的参数为 0x00005000。这样的修改方式在一般的应用下就够用了,后续如果有特殊要求,则需要按照链接脚本的语法来根据需求修改。
6.2 link.icf
6.3 link.lds
步骤七:修改构建脚本 SConscript
步骤八:修改模板
需要修改 芯片型号 和 程序下载方式
步骤八:配置并重新生成
menuconfig
scons --target=mdk5
添加示例 往 STM32F407 中添加 CAN 支持
1 在 STM32CubeMX 使能相关控件(就是简单配置一些基础内容)
注意: 在 CubeMX 中不必过度关注配置,只需要使能相关 IO 口,其他具体配置都在 OS 中进行,比如 UART 支持 DMA 这些都不需要在 CubeMX 中开启避免产生冲突,亲测出现缺少声明的问题
2 使能相关驱动(为后续配置准备,也可以直接参看相关文件)
推出,使用 scons --target=mdk5
然后,打开文件
3 配置 board/ Kconfig 内容
这里需要配合 keil: Drivers/ drv_can.c 文件
//file: rtdevice.h
技巧:直接检索 RT_USING_CAN 即可
到此,我们已经知道相关配置宏定义名称
在 on-chip 一栏下添加
menuconfig BSP_USING_CAN
bool "Enable CAN BUS"
default n #默认 关闭
select RT_USING_CAN
//依赖 RT_USING_CAN
//在 rtdevice.h 文件中可以找到
if BSP_USING_CAN
config BSP_USING_CAN1
bool "Enable CAN1"
default y
config BSP_USING_CAN2
bool "Enable CAN2"
default n
endif
配置完成
4 再次进入配置环境
menuconfig 下使能即可,编译
在 keil 文件查看相关代码是否使能成功