NUCLEO-F746ZG UART3 - PullRequest
       59

NUCLEO-F746ZG UART3

0 голосов
/ 12 мая 2019

Я пытаюсь использовать UART3 в NUCLEO-F746ZG с TrueStudio.USART3 подключен к ST-LINK для поддержки виртуального COM-порта, но теперь он не работает.У меня нет осциллографа, и я действительно хочу видеть печатное сообщение через гипертерминал как реалтер.

Я искал эту проблему и обнаружил, что многим пользователям было трудно.

НаконецЯ нашел решение для примера UART, который находится в STM32CubMX со следующего веб-сайта.Если я скопирую syscall.c, то в примере UART он будет работать нормально.

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

Ниже приведен пример кода UART из STM32CubeMX.Directory: 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();
  }

}
...