You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32串口读取无消息显示问题求助(NUCLEO-L4R5ZI-P板)

解决NUCLEO-L4R5ZI-P USART2串口无输出问题

1. 关闭USART2硬件流控

你的USART2初始化配置里开启了RTS/CTS硬件流控,但NUCLEO-L4R5ZI-P的ST-Link虚拟串口并未连接这两个引脚,导致发送流程被阻塞。修改MX_USART2_UART_Init中的流控配置:

huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;

2. 修正串口设备路径与权限

  • 你提到的/dev/ttyATM0是笔误,NUCLEO开发板的虚拟串口设备应为/dev/ttyACM0。可以通过以下命令确认设备存在:
    ls /dev/ttyACM*
    
  • 确保当前用户有权限访问串口设备,执行以下命令加入dialout组(需重启或重新登录生效):
    sudo usermod -aG dialout $USER
    

3. 优化main函数发送逻辑

循环中持续发送会导致接收端无法正常解析,添加延时控制发送频率,同时优化字符串格式便于观察:

/* USER CODE BEGIN WHILE */
char buf[] = "Hello World!\r\n";
while (1)
{
  /* USER CODE END WHILE */
  HAL_UART_Transmit(&huart2, (uint8_t*)buf, strlen(buf), HAL_MAX_DELAY);
  HAL_Delay(1000); // 每秒发送一次
  /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */

4. 确认USART2引脚配置

检查STM32CubeIDE的Pinout视图:

  • USART2_TX(PA2)需配置为Alternate Function Push Pull,复用功能为AF7 (USART2);
  • USART2_RX(PA3)需配置为Input Floating或Pull-up,复用功能为AF7 (USART2);
  • 确保GPIO初始化代码正确生成,无引脚冲突。

5. 验证初始化是否成功

在USER CODE BEGIN 2中加入LED闪烁代码,确认USART2初始化未触发Error_Handler(LED引脚以NUCLEO-L4R5ZI-P实际板载LED为准,示例为GPIOA_5):

/* USER CODE BEGIN 2 */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
/* USER CODE END 2 */

按以上步骤修改后,重新编译下载程序,用Putty/minicom以115200波特率、8位数据位、1位停止位、无校验、无流控连接/dev/ttyACM0即可看到输出。

内容的提问来源于stack exchange,提问作者PatTheTrickster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:12:34