Я пытаюсь использовать 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();
}
}