使用STM32H743 IIT6 原子阿波罗板子,BSP 使用的是RTT 网站的V4.02 版,配置的KConfig 文件添加模块如下:
menu “SERIAL_INFO module”
config RT_USING_SERIALINFO
bool “Enable SERIAL_INFO module”
default y
help
this hello module only used for tset
config SERIAL_INFO_name
string “SERIAL_INFO name”
default “SERIAL_INFO”
config SERIAL_INFO_VALUE
int “SERIAL_INFO value”
default 8
config BSP_UART3_RX_USING_DMA
bool “Enable BSP_UART3_RX_USING_DMA_Module”
default y
endmenu
添加了 UART3 的DMA 模块,
打开生成的MDK 工程,在drv_usart.c中有如下语句:
#ifdef BSP_UART3_RX_USING_DMA
uart_obj[UART3_INDEX].uart_dma_flag |= RT_DEVICE_FLAG_DMA_RX;
static struct dma_config uart3_dma_rx = UART3_DMA_RX_CONFIG;
uart_config[UART3_INDEX].dma_rx = &uart3_dma_rx;
endif
在drv_dma.h 中有如下的结构定义
struct dma_config {
DMA_INSTANCE_TYPE *Instance;
rt_uint32_t dma_rcc;
IRQn_Type dma_irq;
if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7)
rt_uint32_t channel;
endif
if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32G4)
rt_uint32_t request;
endif
};
问题如下:
因为使用的是stm32h743 ,所以并没有定义 rt_uint32_t channel;
所以如此配置,编译工程会出现
..\libraries\HAL_Drivers\drv_usart.c(922): error: #136: struct “dma_config” has no field “channel”
因为在 uart_config.h 中
ifndef UART3_DMA_RX_CONFIG
define UART3_DMA_RX_CONFIG
{
.Instance = UART3_RX_DMA_INSTANCE,
.channel = UART3_RX_DMA_CHANNEL,
.dma_rcc = UART3_RX_DMA_RCC,
.dma_irq = UART3_RX_DMA_IRQ,
}
此结构中有 .channel ,所以会出现此问题,
请问各位高手,此问题该如何解决呢?谢谢!