orangepi——uart串口开发(TX,RX)
基于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)相关推荐
- 瑞萨e2studio(5)----使用UART串口烧写程序到瑞萨芯片
瑞萨e2studio.5----使用UART串口烧写程序到瑞萨芯片 概述 视频教学 csdn课程 样品申请 硬件准备 软件准备 hex文件准备 UART串口与瑞萨开发板进行接线 烧录 概述 本篇文章主 ...
- 树莓派UART串口编程--使用wiringPi库-C开发【1-基础应用】
一.串口说明 莓派3B+上UART串口位于GPIO的8脚和10脚,分别为GPIO8=Tx,GPIO10=Rx.在连接外部接口时,需要交换接口,即GPIO8连接到外设的Rx,GPIO10连接到外设的Tx ...
- linux编译运行uart,嵌入式Linux裸机开发(七)——UART串口通信
嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTE ...
- 【MSP430G2553】图形化开发笔记(5) UART 串口及printf
目录 概述 UART 的初始化 使用 Grace 配置 UART 介绍 用例:UART模式 FIFO的思想 使用 FIFO 发送 UART 数据 使用 FIFO 接收 UART 数据 FIFO编程 U ...
- 【正点原子MP157连载】 第十六章 UART串口通信实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- 阿里云开发板HaaS510响应UART串口指令
摘要:开发物联网设备时,常用MCU+物联网模块的硬件结构,HaaS510就是一款非常好的物联网模块.本文与大家分享HaaS510在成功上云基础上,如何响应UART串口指令. 实验目的:通过haas51 ...
- Orangepi Zero2——Linux串口开发
文章目录 串口的认识 UART RS-232 TTL 香橙派有三个串口驱动设备文件 wiringPi示例代码 基于wiringPi的串口开发 自己实现串口通信 串口的认识 串行接口简称串口,也称串行通 ...
- Linux裸机开发|UART串口通信
UART串口通信 不管是单片机开发还是嵌入式Linux开发,串口都是最常用到的外设.可以通过串口将开发板与电脑相连,然后在电脑上通过串口调试助手来调试程序.还有很多模块,比如蓝牙.GPS.GPRS等都 ...
- STM32 HAL库 UART 串口读写功能笔记
https://www.cnblogs.com/Mysterious/p/4804188.html STM32L0 HAL库 UART 串口读写功能 串口发送功能: uint8_t TxData[10 ...
最新文章
- 先进机器人系统中的关键技术
- [CTO札记]从技术走向商业的3级转变
- linux高性能网络编程读书笔记之socket数据读写
- 广东线上比赛过程集锦
- 如何根据字典中值的大小,对字典中的项排序
- 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )
- 大数据分析:Java 下降,华为平均月薪高达 35K,分析 89 万招聘数据有这些发现!
- make、make是什么??
- php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法
- fastreport iif小于条件_杭州灭菌柜验证需要什么条件
- Android 系统(30)---如何用DDMS分析native memory leak
- 完整的 .NET Core 目标框架的预处理器符号列表
- 阿里发布藏经阁计划:一年建成知识引擎服务平台
- c# key event
- everything html修改,在HTML 5视频标签上更改源
- 用python把图片换成蓝底_用python 将蓝底照片转化为白底照片
- oracle rebuild online,alter index rebuild
- 51Nod 1048 1383 整数分解为2的幂
- C++ 小游戏之推箱子
- 初级,中级,高级程序员需要具备的能力