0

TrueStudioでNUCLEO-F746ZGのUART3を使おうとしています。USART3 を ST-LINK に接続して仮想 COM ポートをサポートしましたが、現在は動作しません。私はオシロスコープを持っていないので、リアルタームのようにハイパーターミナルを介して印刷メッセージを見たいと思っています。

この問題を検索したところ、多くのユーザーが苦労していることがわかりました。

最後に、次の Web サイトから 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