RT-Thread Version
none
Hardware Type/Architectures
none
Develop Toolchain
Other
Describe the bug
问题描述
在 STM32H7 BSP 中启用 BSP_USING_SPI6 后,工程编译失败,原因是 drv_spi.c 中已经支持并引用了 SPI6_BUS_CONFIG,经过检查发现F4等系列的SPI存在该宏,但 H7 系列的 SPI 配置模板中没有定义该宏
报错如下:
../libraries/HAL_Drivers/drivers/drv_spi.c(125): error: use of undeclared identifier 'SPI6_BUS_CONFIG'
125 | SPI6_BUS_CONFIG,
| ^
复现条件
以 STM32H7 BSP 为例:
- 在
menuconfig 中启用 SPI6:
BSP_USING_SPI=y
BSP_USING_SPI6=y
- 生成配置和 Keil 工程:
scons --pyconfig-silent
scons --target=mdk5
- 使用 Keil MDK 编译工程。
编译会在 drv_spi.c 中失败。
原因猜测
drv_spi.c 中已经包含 SPI6 的支持代码:
#ifdef BSP_USING_SPI6
SPI6_BUS_CONFIG,
#endif /* BSP_USING_SPI6 */
但是 spi_config.h 目前只定义了:
SPI1_BUS_CONFIG
SPI2_BUS_CONFIG
SPI3_BUS_CONFIG
SPI4_BUS_CONFIG
SPI5_BUS_CONFIG
缺少:
对比 spi_config.h,F4 系列已经定义了 SPI6 的总线配置以及 DMA 配置:
SPI6_BUS_CONFIG
SPI6_TX_DMA_CONFIG
SPI6_RX_DMA_CONFIG
而 H7 系列目前缺少对应定义。
此外,部分 H7/H7RS BSP 的 board/Kconfig 已经暴露了 BSP_USING_SPI6 选项,例如:
bsp/stm32/stm32h7r7-artpi2
bsp/stm32/stm32h7s7-st-disco
因此启用该选项后会进入不可编译状态。
期望结果
spi_config.h 应补充 SPI6 的配置定义,至少包括:
如果考虑 DMA 支持,也应补充:
SPI6_TX_DMA_CONFIG
SPI6_RX_DMA_CONFIG
可能的修复方向
或许可以参考 F4 系列的实现,在 H7 SPI 配置模板中补充 SPI6 的基础配置:
#ifdef BSP_USING_SPI6
#ifndef SPI6_BUS_CONFIG
#define SPI6_BUS_CONFIG \
{ \
.Instance = SPI6, \
.bus_name = "spi6", \
.irq_type = SPI6_IRQn, \
}
#endif /* SPI6_BUS_CONFIG */
#endif /* BSP_USING_SPI6 */
并参考 F4 系列实现补齐 SPI6 TX/RX DMA 配置。
环境信息
RT-Thread: 当前 master / 或填写具体 commit
BSP: bsp/stm32/stm32h723-DM-MC02
MCU: STM32H723ZG
Toolchain: Keil MDK ARMClang 6.22
补充说明
本问题不是 ST HAL package 缺失导致的。pkgs --update 已正确拉取 STM32H7 HAL/CMSIS 包,且 stm32h7xx_hal_spi.c 可以正常进入编译。如果确认BUG属实的话,我会开启一个PR来修复
Other additional context
No response
RT-Thread Version
none
Hardware Type/Architectures
none
Develop Toolchain
Other
Describe the bug
问题描述
在 STM32H7 BSP 中启用 BSP_USING_SPI6 后,工程编译失败,原因是 drv_spi.c 中已经支持并引用了 SPI6_BUS_CONFIG,经过检查发现F4等系列的SPI存在该宏,但 H7 系列的 SPI 配置模板中没有定义该宏
报错如下:
复现条件
以 STM32H7 BSP 为例:
menuconfig中启用 SPI6:编译会在 drv_spi.c 中失败。
原因猜测
drv_spi.c 中已经包含 SPI6 的支持代码:
但是 spi_config.h 目前只定义了:
缺少:
对比 spi_config.h,F4 系列已经定义了 SPI6 的总线配置以及 DMA 配置:
而 H7 系列目前缺少对应定义。
此外,部分 H7/H7RS BSP 的
board/Kconfig已经暴露了BSP_USING_SPI6选项,例如:因此启用该选项后会进入不可编译状态。
期望结果
spi_config.h 应补充 SPI6 的配置定义,至少包括:
如果考虑 DMA 支持,也应补充:
可能的修复方向
或许可以参考 F4 系列的实现,在 H7 SPI 配置模板中补充 SPI6 的基础配置:
并参考 F4 系列实现补齐 SPI6 TX/RX DMA 配置。
环境信息
补充说明
本问题不是 ST HAL package 缺失导致的。
pkgs --update已正确拉取 STM32H7 HAL/CMSIS 包,且 stm32h7xx_hal_spi.c 可以正常进入编译。如果确认BUG属实的话,我会开启一个PR来修复Other additional context
No response