Linux串口编程(中断方式和select方式)

Posted 毛毛虫的爹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux串口编程(中断方式和select方式)相关的知识,希望对你有一定的参考价值。

Linux下的串口编程,在嵌入式开发中占据着重要的地位,因为很多的嵌入式设备都是通过串口交换数据的。在没有操作系统的我们可以使用UART的中断来出来数据的接受和发送,而在Linux操作系统下,我们也可以使用软中断的方式来处理数据的接受和发送,这里主要使用的是信号SIGIO,也就是异步I/O。这里也可以使用select实现异步形式的通知。 这里可以参考《UNIX 环境高级编程》中的第14章 高级I/O和第18章的I/O终端,这两章描述了串口的编程和异步I/O方面的内容。还有一本书《linux serial programming how-to》,《Serial Programming Guide for POSIX Operating Systems》。这都是串口编程的必读和经典书籍。

串口参数的设置一般包括波特率、起始位数量、数据位、停止位和流控协议。在接收端和发送端要配置成一样的参数设置。在Linux中,所有的设备文件一般都位于“/dev”下,其中串口一、串口二对应的设备名依次为“/dev/ttyS0”、"/dev/ttyS1"。这可以通过查看"/dev"下的文件加以确认。我的串口通信是开发板ARM9–mini2440发送数据,PC机通过串口接受数据。我的串口的参数设置为 115200,8,‘N’,1。也就是波特率是115200,8位数据位,无奇偶校验位,1位停止位。因为是用的开发板发送数据,所以要用到在minicom中运行发送的程序,不过在发送程序运行后,要立即关闭minicom,否则,接受程序不能接受到数据。这个是我使用中断时出现的问题,当我使用select是没有此问题,现在还不知道具体的原因是什么。

串口编程中有一个最重要的结构体:

struct termios
{ <

以上是关于Linux串口编程(中断方式和select方式)的主要内容,如果未能解决你的问题,请参考以下文章

Linux中多路串口Select监听方式

stm32 串口中断发送和接收怎么回事,就是串口的中断方式和查询方式有啥区别?

linux内核调试串口使用dma方式 是啥配置

STM32 | 串口空闲中断接收不定长数据(DMA方式)

STM32HAL 串口发送(中断方式)

STM32学习笔记——串口控制LED(中断方式)