当前位置: 代码迷 >> 综合 >> 三、Jetson TX2下的串口通信 (Linux)------程序(采用POLLIN中断)
  详细解决方案

三、Jetson TX2下的串口通信 (Linux)------程序(采用POLLIN中断)

热度:56   发布时间:2023-11-23 19:14:53.0

         感觉自己也是闲无聊,处于对stm32的执念,我一直觉得串口中断就应该是那种有一个输入中断,一个输出中断的,然后奈何才疏学浅,一直不知道怎么弄,后来查到了Jetson TX2的IO中断,发现它就是采用的检测IO的输入输出,相比于之前的SIGIO中断有一个好处:   

                SIGIO中断,串口的输入输出都会引起该中断

                 POLLIN中断,只有串口的输入才会引起,这就减少了判断

实际上最简单的方法就是查询,也就是直接在循环里面read(),  有就读取,但是这样始终都会占用时间,没有中断节省时间,POLLIN中断则会更方便。

              GPIO的中断参考下面的链接:

                https://developer.ridgerun.com/wiki/index.php/Gpio-int-test.c

               我将这个文件改装了一下,和自己写的串口中断放在一起,大家有兴趣的可以在这里下载。

 

              函数的主要部分:

             

memset((void*)fdset, 0, sizeof(fdset));fdset[0].fd=my_fd;fdset[0].events = POLLIN;rc = poll(fdset, nfds, timeout);  if (rc < 0) {printf("\npoll() failed!\n");return -1;}USART_Send_Dis(1,2);if (fdset[0].revents & POLLIN){read(fdset[0].fd, Buff_Rec, 20);USART_Rec(Buff_Rec,20);tcflush(my_fd, TCIFLUSH);cout<<"get -------------"<<endl;memset(Buff_Rec,0,20*sizeof(u8));//printf("\npoll() stdin read 0x%2.2X\n", (unsigned int) buf[0]);}		

  这里面最关键的是POLLIN的使用,其他的串口初始化、参数设置,都跟我在第二节里面讲的一样