插件窝 干货文章 Linux系统调试篇——stty修改串口波特率

Linux系统调试篇——stty修改串口波特率

串口 波特率 设置 stty 112    来源:    2025-04-14

Linux系统调试:使用stty修改串口波特率

stty命令简介

stty是Linux系统中用于显示和修改终端(terminal)设置的实用工具,它可以用来配置串口通信参数,包括波特率、数据位、停止位和校验位等。

查看当前串口参数

在修改串口参数前,建议先查看当前设置:

stty -F /dev/ttyS0 -a

或使用更简洁的方式:

stty -F /dev/ttyS0

输出示例:

speed 9600 baud; line = 0;
-brkint -imaxbel

修改串口波特率

基本语法

stty -F /dev/串口设备名 波特率

示例:将ttyS0波特率设置为115200

stty -F /dev/ttyS0 115200

验证修改

修改后再次查看确认:

stty -F /dev/ttyS0

设置其他串口参数

除了波特率,还可以设置其他通信参数:

stty -F /dev/ttyS0 115200 cs8 -cstopb -parenb

参数说明: - 115200:波特率 - cs8:8位数据位 - -cstopb:1位停止位(使用cstopb表示2位停止位) - -parenb:无校验位(使用parenb启用校验位)

常见问题解决

1. 权限不足

如果出现"Permission denied"错误,尝试使用sudo:

sudo stty -F /dev/ttyS0 115200

或者将当前用户加入dialout组:

sudo usermod -a -G dialout $USER

然后注销重新登录。

2. 设备不存在

确认设备文件是否存在:

ls -l /dev/ttyS*

对于USB转串口设备,通常是/dev/ttyUSB0等。

3. 设置不生效

  • 确保没有其他程序正在使用该串口
  • 检查硬件是否支持该波特率
  • 尝试重新插拔串口设备

高级用法

保存和恢复串口设置

保存当前设置:

stty -F /dev/ttyS0 -g > ttyS0_settings

恢复设置:

stty -F /dev/ttyS0 $(cat ttyS0_settings)

设置硬件流控

stty -F /dev/ttyS0 crtscts

禁用硬件流控

stty -F /dev/ttyS0 -crtscts

注意事项

  1. 修改串口参数需要有相应权限
  2. 修改前确保没有重要程序正在使用该串口
  3. 某些特殊波特率可能需要特定硬件支持
  4. 设置仅在当前会话有效,重启后会恢复默认值

通过stty命令,您可以灵活地配置Linux系统中的串口通信参数,满足各种调试和通信需求。