NUCLEO-F746ZG UART3
Я пытаюсь использовать 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. Каталог: 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();
}
}