我在配置stm32f429 DISCO板以在UART5上进行UART传输时遇到一些问题。
我使用了st提供的示例项目,确切地说,是版本1.7.0中的UART/UART-TwoBoards-ComDMA。
在本例中,USART1用于环绕一个数据包。
当使用原始代码对迪斯科板进行编程时,我可以在示波器上看到USART1输出消息。
另一方面,当我尝试用UART5做同样的事情时,因为USART1的管脚将在我的最终配置中被阻塞,它将无法工作。
我把问题缩小到初始化过程。

HAL_UART_MspInit(huart);

此函数没有在UART1->SR中设置TC和RXNE位,因此没有配置UART5。
我知道对于UART1你需要启用时钟,因为它可以是同步传输。
__HAL_RCC_USART1_CLK_ENABLE();

我似乎找不到与UART5类似的函数。有人给我个主意或暗示吗?
如果这个问题背后有一个更大的问题,下面是示例中UART5配置的更改设置。
/* Definition for USARTx clock resources */
#define USARTx                           UART5
//#define USARTx_CLK_ENABLE()            __HAL_RCC_USART1_CLK_ENABLE();
#define DMAx_CLK_ENABLE()                __HAL_RCC_DMA1_CLK_ENABLE()
#define USARTx_RX_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOD_CLK_ENABLE()
#define USARTx_TX_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOC_CLK_ENABLE()

//#define USARTx_FORCE_RESET()           __HAL_RCC_USART1_FORCE_RESET()
//#define USARTx_RELEASE_RESET()         __HAL_RCC_USART1_RELEASE_RESET()

/* Definition for USARTx Pins */
#define USARTx_TX_PIN                    GPIO_PIN_12
#define USARTx_TX_GPIO_PORT              GPIOC
#define USARTx_TX_AF                     GPIO_AF8_UART5
#define USARTx_RX_PIN                    GPIO_PIN_2
#define USARTx_RX_GPIO_PORT              GPIOD
#define USARTx_RX_AF                     GPIO_AF8_UART5

/* Definition for USARTx's DMA */
#define USARTx_TX_DMA_CHANNEL            DMA_CHANNEL_4
#define USARTx_TX_DMA_STREAM             DMA1_Stream7
#define USARTx_RX_DMA_CHANNEL            DMA_CHANNEL_4
#define USARTx_RX_DMA_STREAM             DMA1_Stream0

/* Definition for USARTx's NVIC */
#define USARTx_DMA_TX_IRQn               DMA1_Stream7_IRQn
#define USARTx_DMA_RX_IRQn               DMA1_Stream0_IRQn
#define USARTx_DMA_TX_IRQHandler         DMA1_Stream7_IRQHandler
#define USARTx_DMA_RX_IRQHandler         DMA1_Stream0_IRQHandler
#define USARTx_IRQn                      UART5_IRQn
#define USARTx_IRQHandler                UART5_IRQHandler

我很高兴有任何建议和帮助,引导我朝着正确的方向。
谢谢你抽出时间,
艾默尔

最佳答案

UART5没有S,因此调用启用时钟的函数
__HAL_RCC_UART5_CLK_ENABLE();,例如那里:Receiving data from 2 UARTs, STM32F4-Discovery, HAL drivers

10-07 15:33