基于wiringPi的串口开发

1、简介

串口是嵌入式常用的一种通信方式,串口协议涉及到波特率、奇偶校验位、数据位、停止位等。如何配置寄存器。

串行接口的简称,按照一位一位的顺序传输。

wiringPi有2个串口(gpio readall来看)ls /dev/ttyS*查看

ttyS1是登录时连接的串口,usb后边的3个引脚

ttyS5是本节课程需要用到的

电脑上的串口为RS-232,9针串口;现在电路板上一般用的是ttl串口

开发根据实际需要进行,可以stm32连接一些简单的,orangepi来做一些有关联网的存储的等

也能用串口来进行32与orangepi之间的一些数据交互、控制等

2、接线:

RX——TX

TX——RX

gnd——gnd

交叉接线

3、代码实现串口数据交互

① cp ../wiringPi_from_windows/wiringOP-master/examples/serialTest.c .   复制代码到当前文件夹

#include <stdio.h>
#include <string.h>
#include <errno.h>#include <wiringPi.h>
#include <wiringSerial.h>int main ()
{int fd ;int count ;unsigned int nextTime ;if ((fd = serialOpen ("/dev/ttyS5", 115200)) < 0){fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;return 1 ;}if (wiringPiSetup () == -1){fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;return 1 ;}nextTime = millis () + 300 ;for (count = 0 ; count < 256 ; ){if (millis () > nextTime){printf ("\nOut: %3d: ", count) ;fflush (stdout) ;serialPutchar (fd, count) ;//发送数据nextTime += 300 ;++count ;}delay (3) ;while (serialDataAvail (fd)){printf (" -> %3d", serialGetchar (fd)) ;//接收数据fflush (stdout) ;}}printf ("\n") ;return 0 ;
}

编译运行结果:

2、基于以上代码进行修改,添加线程,实现数据收发

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <pthread.h>
#include <wiringPi.h>
#include <wiringSerial.h>
int fd;void *sendhandler()
{char * sendbuf;sendbuf=(char*)malloc(32*sizeof(32));while(1){memset(sendbuf,0,32);scanf("%s",sendbuf);while(*sendbuf){serialPutchar (fd,*sendbuf++) ;}}
}void *revhandler()
{while(1){while (serialDataAvail (fd)){printf ("%c", serialGetchar (fd)) ;fflush (stdout) ;}}
}int main ()
{unsigned int nextTime ;pthread_t idsend;pthread_t idrev;if ((fd = serialOpen ("/dev/ttyS5", 115200)) < 0){fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;return 1 ;}pthread_create(&idsend,NULL,sendhandler,NULL);pthread_create(&idrev,NULL,revhandler,NULL);if (wiringPiSetup () == -1){fprintf (stdout, "Unable to start wiringPi: %s\n", strerror (errno)) ;return 1 ;}while(1) sleep(10);printf ("\n") ;return 0 ;
}

添加2个线程,分别实现数据的接收和数据的发送

编译运行:

orangepi——uart串口开发(TX,RX)相关推荐

  1. 瑞萨e2studio(5)----使用UART串口烧写程序到瑞萨芯片

    瑞萨e2studio.5----使用UART串口烧写程序到瑞萨芯片 概述 视频教学 csdn课程 样品申请 硬件准备 软件准备 hex文件准备 UART串口与瑞萨开发板进行接线 烧录 概述 本篇文章主 ...

  2. 树莓派UART串口编程--使用wiringPi库-C开发【1-基础应用】

    一.串口说明 莓派3B+上UART串口位于GPIO的8脚和10脚,分别为GPIO8=Tx,GPIO10=Rx.在连接外部接口时,需要交换接口,即GPIO8连接到外设的Rx,GPIO10连接到外设的Tx ...

  3. linux编译运行uart,嵌入式Linux裸机开发(七)——UART串口通信

    嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTE ...

  4. 【MSP430G2553】图形化开发笔记(5) UART 串口及printf

    目录 概述 UART 的初始化 使用 Grace 配置 UART 介绍 用例:UART模式 FIFO的思想 使用 FIFO 发送 UART 数据 使用 FIFO 接收 UART 数据 FIFO编程 U ...

  5. 【正点原子MP157连载】 第十六章 UART串口通信实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  6. 阿里云开发板HaaS510响应UART串口指令

    摘要:开发物联网设备时,常用MCU+物联网模块的硬件结构,HaaS510就是一款非常好的物联网模块.本文与大家分享HaaS510在成功上云基础上,如何响应UART串口指令. 实验目的:通过haas51 ...

  7. Orangepi Zero2——Linux串口开发

    文章目录 串口的认识 UART RS-232 TTL 香橙派有三个串口驱动设备文件 wiringPi示例代码 基于wiringPi的串口开发 自己实现串口通信 串口的认识 串行接口简称串口,也称串行通 ...

  8. Linux裸机开发|UART串口通信

    UART串口通信 不管是单片机开发还是嵌入式Linux开发,串口都是最常用到的外设.可以通过串口将开发板与电脑相连,然后在电脑上通过串口调试助手来调试程序.还有很多模块,比如蓝牙.GPS.GPRS等都 ...

  9. STM32 HAL库 UART 串口读写功能笔记

    https://www.cnblogs.com/Mysterious/p/4804188.html STM32L0 HAL库 UART 串口读写功能 串口发送功能: uint8_t TxData[10 ...

最新文章

  1. 先进机器人系统中的关键技术
  2. [CTO札记]从技术走向商业的3级转变
  3. linux高性能网络编程读书笔记之socket数据读写
  4. 广东线上比赛过程集锦
  5. 如何根据字典中值的大小,对字典中的项排序
  6. 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )
  7. 大数据分析:Java 下降,华为平均月薪高达 35K,分析 89 万招聘数据有这些发现!
  8. make、make是什么??
  9. php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法
  10. fastreport iif小于条件_杭州灭菌柜验证需要什么条件
  11. Android 系统(30)---如何用DDMS分析native memory leak
  12. 完整的 .NET Core 目标框架的预处理器符号列表
  13. 阿里发布藏经阁计划:一年建成知识引擎服务平台
  14. c# key event
  15. everything html修改,在HTML 5视频标签上更改源
  16. 用python把图片换成蓝底_用python 将蓝底照片转化为白底照片
  17. oracle rebuild online,alter index rebuild
  18. 51Nod 1048 1383 整数分解为2的幂
  19. C++ 小游戏之推箱子
  20. 初级,中级,高级程序员需要具备的能力

热门文章

  1. c语言写骷髅病毒源码,骷髅病毒分析报告
  2. UbuntuFTP文件传输安装
  3. php基础九(通过cURL来做小偷程序)
  4. 阿斯汤加瑜伽(Ashtanga Yoga)第一序列学习与实践笔记(十)
  5. 生日快乐的代码_贺渝同学生日快乐!
  6. 页面载入-(dom、css、图片 等资源 加载完成) 执行
  7. 360搜索用上了so.com域名
  8. 让java支持es6_简单看看es6解构赋值
  9. SQL server  查询练习(四十五道题)
  10. 关于实现平台账号密码登录后,再进行微信授权认证步骤的实现方法