我正在尝试在带有TrueStudio的NUCLEO-F746ZG中使用UART3。 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();
}
}