STM32H7 HAL_UART_Init永久阻塞并失败

STM32H7 HAL_UART_Init永久阻塞并失败,stm32,stm32cubeide,stm32h7,Stm32,Stm32cubeide,Stm32h7,我用昨天下载的STM32CubeIDE启动了一个新项目,更新检查显示我是最新的。漂亮而简单的LED闪光灯和通过UART的Hello world。使用STM32H753II 我正在使用USART2,设置为异步。我试过使用DMA和不使用DMA。除了我的闪烁代码,一切都是由CubeIDE自动生成的 在所有情况下,程序都会在MX_USART2_UART_Init()内的HAL_UART_Init(&huart2)调用中陷入无限循环 深入挖掘,我发现它在HAL_UART_Init(&huart2)中被卡住

我用昨天下载的STM32CubeIDE启动了一个新项目,更新检查显示我是最新的。漂亮而简单的LED闪光灯和通过UART的Hello world。使用STM32H753II

我正在使用USART2,设置为异步。我试过使用DMA和不使用DMA。除了我的闪烁代码,一切都是由CubeIDE自动生成的

在所有情况下,程序都会在MX_USART2_UART_Init()内的HAL_UART_Init(&huart2)调用中陷入无限循环

深入挖掘,我发现它在HAL_UART_Init(&huart2)中被卡住的地方是:

这是电话里的内容:

/* Wait until TEACK flag is set */
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
{
  /* Timeout occurred */
  return HAL_TIMEOUT;
}
在这里,TEACK标志似乎永远不会重置。令人困惑的是,注释是SET,但函数调用是RESET。我不确定这是否是问题所在

如果有人能指出我的设置出了什么问题,我将不胜感激。我以为建立一个新项目来做一个“hello world”会很简单

注;我熟悉STM32,但正在考虑将我的项目从TrueStudio转移过来

到STM32论坛的问题,在那里我上传了作为附件的项目


编辑;我现在也尝试了UART4和UART8,同样的问题仍然存在。与IDE中的UART_printf示例项目类似。

WaitOnFlag在重置标志时保持循环,因此注释和调用是正确的,但注释可能会更清晰(或者函数可能会等待提供的状态)
/* Wait until TEACK flag is set */
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
{
  /* Timeout occurred */
  return HAL_TIMEOUT;
}