0

我已经开始了一个新项目,使用的是我昨天下载的 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 转移过来。

链接到我已将项目作为附件上传的 STM32 论坛上的问题。

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

4

0 回答 0