芯片型号:zynq7020
VIVADO版本:2018.3
一、序言
一般来说,修改串口的配置,可以在petalinux制作系统的时候,就修改参数,或者也可以在设备树修改,但如果系统已经制作好了之后,在应用层直接修改,会更简单一点。
二、代码
#define SERIAL_PORT "/dev/ttyPS1"
#include <termios.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
//串口初始化
int main()
{
int serial_fd;//定义一个串口open之后的参数
struct termios serial_settings;
//定义termios结构体变量
serial_fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY);
//打开串口
if (serial_fd < 0)
{
perror("Error opening serial port!!!");
return 1;
}
tcgetattr(serial_fd, &serial_settings);
//用于获取终端的参数,也就是说你也可以修改别的终端。
//cflag表示控制模式标志,指定终端硬件控制信息。
serial_settings.c_cflag &= ~CSIZE; // 屏蔽字符大小位
serial_settings.c_cflag |= CS8; //使用8位数据位
serial_settings.c_cflag &= ~PARENB; //无奇偶校验
serial_settings.c_cflag &= ~CSTOPB; //1位停止位
serial_settings.c_lflag &= ~ECHO; //屏蔽回显
//设置波特率
cfsetispeed(&serial_settings, B9600);
//cfgetispeed()表示获取波特率
cfsetospeed(&serial_settings, B9600);
tcsetattr(serial_fd, TCSANOW, &serial_settings);
//TCSANOW:不等数据传输完毕就立即改变属性。
}
三、附上详细tcgetattr详解链接
c++实现串口功能之termios.h头文件研读<一>
https://blog.csdn.net/lepaitianshi/article/details/126429574?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171686452816800197095408%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171686452816800197095408&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-14-126429574-null-null.142v100pc_search_result_base1&utm_term=termios&spm=1018.2226.3001.4187