STM32H7 HAL_UART_Init 永远阻塞并失败

问题描述

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

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

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

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

return (UART_CheckIdleState(huart));

里面是电话:

/* 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 转移。

Link 到 STM32 论坛上的问题,我已将项目作为附件上传

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)