stm32F429-DISCOVERY 上的 UART5 - 未初始化
UART5 on stm32F429-DISCOVERY - not initialized
我 运行 在为 UART5 上的 UART t运行smission 配置我的 stm32f429-DISCO 板时遇到了一些问题。
我使用了st提供的示例项目。确切地说,是1.7.0版本中的UART/UART_TwoBoards_ComDMA。
在本例中,USART1 用于环绕一个数据包。
当 DISCO 板用原始代码编程时,我可以在我的示波器上看到 USART1 输出消息。
另一方面,当我尝试用 UART5 做同样的事情时,因为 USART1 的引脚在我的最终配置中会被阻塞,所以它不会工作。
我将问题缩小到初始化过程。
HAL_UART_MspInit(huart);
此函数没有设置UART1->SR中的TC和RXNE位,因此UART5没有配置。
我知道您需要为 UART1 启用时钟,因为它可以是同步 t运行smission。
__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();
,例如那里:
我 运行 在为 UART5 上的 UART t运行smission 配置我的 stm32f429-DISCO 板时遇到了一些问题。 我使用了st提供的示例项目。确切地说,是1.7.0版本中的UART/UART_TwoBoards_ComDMA。 在本例中,USART1 用于环绕一个数据包。 当 DISCO 板用原始代码编程时,我可以在我的示波器上看到 USART1 输出消息。
另一方面,当我尝试用 UART5 做同样的事情时,因为 USART1 的引脚在我的最终配置中会被阻塞,所以它不会工作。
我将问题缩小到初始化过程。
HAL_UART_MspInit(huart);
此函数没有设置UART1->SR中的TC和RXNE位,因此UART5没有配置。 我知道您需要为 UART1 启用时钟,因为它可以是同步 t运行smission。
__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();
,例如那里: