Uart 配置

博客提及了serialcode.h,但未给出更多详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

serialcode.c
/*******************************************************************************
  * @file        serialcode.c
  * @copyright   2022 
  * @author     
  * @date        2022-6-14
  * caption:								
*******************************************************************************/
#include <termios.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h> 
#include <linux/kernel.h>
#include <stdio.h>
#include <pthread.h>
#include <string.h>
#include <sys/select.h>
#include <sys/time.h>
#include "serialcode.h"



unsigned char Write_RingBuff(unsigned char data);
unsigned char Read_RingBuff(unsigned char *rData);


pthread_mutex_t mutex ;
int uart_fd;
Uart_RingBuff_t RingBuff;

 
 
int Set_Com_Config(int fd, int baud_rate, int data_bits, char parity, int stop_bits)
{
   struct termios new_cfg, old_cfg;
   int speed;
   
   /*保存并测试现有串口参数设置,在这里如果串口号等出错,会有相关出错信息*/
	if(tcgetattr(fd, &old_cfg) != 0)       /*该函数得到fd指向的终端配置参数,并将它们保存到old_cfg变量中,成功返回0,否则-1*/
	{
		perror("tcgetttr");
		return -1;
	}

    /*设置字符大小*/
   new_cfg = old_cfg;   
   cfmakeraw(&new_cfg); /*配置为原始模式*/ 
   new_cfg.c_cflag &= ~CSIZE; /*用位掩码清空数据位的设置*/  

  /*设置波特率*/
   switch(baud_rate)
   {
		case 2400:
			speed = B2400;			
			break;

		case 4800:			
			speed = B4800;			
			break;

		case 9600:
			speed = B9600;			
			break;

		case 19200:			
			speed = B19200;			
			break;

		case 38400:			
			speed = B38400;			
			break;

		default:
		case 115200:			
			speed = B115200;			
			break;
  }

   cfsetispeed(&new_cfg, speed); //设置输入波特率
   cfsetospeed(&new_cfg, speed); //设置输出波特率

	/*设置数据长度*/
	switch(data_bits)
	{
		case 5:
			new_cfg.c_cflag &=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值