0

我正在尝试将 NUCLEO-F746ZG 中的 UART3 与 TrueStudio 一起使用。USART3 连接 ST-LINK 支持虚拟 COM 口,但是现在不行了。我没有示波器,我真的很想通过超级终端看到打印消息,就像一个实时术语。

我搜索了这个问题,发现很多用户都很难过。

最后,我从以下网站找到了 STM32CubMX 中的 UART 示例解决方案。如果我复制 syscall.c,那么它在 UART 示例中可以正常工作。

https://community.st.com/s/question/0D50X00009XkXDcSAN/problem-with-uart-example-on-nucleof746zg

以下是来自 STM32CubeMX 的 UART 示例代码。目录:STM32Cube_FW_F7_V1.15.0\Projects\STM32F746ZG-Nucleo\Examples\UART\UART_Printf。

int main(void)
{

 .....................

   UartHandle.Instance = USARTx;

   UartHandle.Init.BaudRate = 9600;

   UartHandle.Init.WordLength = UART_WORDLENGTH_8B;

   UartHandle.Init.StopBits = UART_STOPBITS_1;

   UartHandle.Init.Parity = UART_PARITY_NONE;

   UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;

   UartHandle.Init.Mode = UART_MODE_TX_RX;

   UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;

   if (HAL_UART_Init(&UartHandle) != HAL_OK)

   {
    Error_Handler();
   }

}

但是,我使用 STM32CubeMX 生成了代码。我只使用了 USART3 并确认其中有 syscall.c。但尽管如此,我还是看不到打印消息。如果有人解决了这个问题,如果他们分享,我将不胜感激。

以下是我使用STM32CubeMX生成的代码。

int main(void)
{

  HAL_Init();

  SystemClock_Config();

  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_USART3_UART_Init();

  /* USER CODE BEGIN 2 */

  ...

}

static void MX_USART3_UART_Init(void)
{

  huart3.Instance = USART3;

  huart3.Init.BaudRate = 9600;

  huart3.Init.WordLength = UART_WORDLENGTH_8B;

  huart3.Init.StopBits = UART_STOPBITS_1;

  huart3.Init.Parity = UART_PARITY_NONE;

  huart3.Init.Mode = UART_MODE_TX_RX;

  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;

  huart3.Init.OverSampling = UART_OVERSAMPLING_16;

  huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;

  huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;

  if (HAL_UART_Init(&huart3) != HAL_OK)

  {
    Error_Handler();
  }

}
4

0 回答 0