树莓派3QT+wiringPI控制GPIO输入和输出
2016-11-08 20:02
681 查看
今天和大家分享一下树莓派上使用QT和wiringpi进行GPIO控制的相关知识,这里面有很多需要我们注意的地方。在开始说明问题之前,我先介绍一下我的平台,我是控制树莓派的两个GPIO端口,间隔500ms左右交替输出高低电平,同时我使用STM32芯片去读取我输出的高低电平并显示出来,用来检验树莓派是否真的输出了有效的电平信号。我们使用QT来编写和编译我们的程序,但是这里有一个需要注意的地方,那就是QT编写出来的程序需要在中断使用sudo命令来运行,而不能直接双击运行,因为wiringpi中的函数有些需要使用root权限才能正常执行,这单需要各位注意。其实我的想法就是先用QT编写和编译好我们需要运行的代码,之后我们再去写一个脚本去调用这些程序,使这些程序获得root权限,从而可以正常的执行。
我们在编写wiringpi的程序的时候需要注意的是wiringpi对GPIO的编码方式以及BCM物理编码方式的区别,如下图给大家解释一下:
我们把注意力放在红色方框上,其他的分析方法也类似,其中physical两列是对应树莓派上引出的两排排针,顺序是拿着树莓派网卡空对着我,然后排针从上往下数即为图中的顺序,wpi列对应的wirpingpi函数所传递的参数,而BCM列则为BCM编码方式下的GPIO编号。其实我们在使用wiringpi开发我们的程序的时候我们只需要关注两个参数,一个是wiringpi的GPIO编号,还有一个就是该GPIO对应在树莓派实际的物理排针位置。这里我们树莓派举个例子,比如我们需要操作树莓派第11和12GPIO,就是对应树莓派上,第6行上面的两个排针,数好位置之后,我们发现树莓派上第6行上面的两个排针所对应的wpi编号为0和1,这是我们在使用wiringpi函数传递的参数为0和1即为操作物理上第11和12号GPIO。分析好GPIO的wiringpi和物理对应方式之后我们就可以开始使用QT进行编程了,打开QT并建立工程,在主界面输入一下代码(需要在QT中配置一下wiringpi的库文件),如下图:
当编写好函数,使用QT编译完成之后我们可以发现目录下有一个执行的文件,这时候我们不能使用双击的运行(你使用双击方式运行可执行文件,发现并不能达到预期的效果,原因上面已经阐述过了),我们使用终端的方式运行该程序。
cd 可执行文件目录
sudo ./可执行文件最终的执行效果如下:
下面show一下运行的结果图:
可以从STM32的LCD屏幕上看书,每个500ms左右,其电平从0跳变成1,或者从1跳变成0,完成整个GPIO的测试功能。
我们在编写wiringpi的程序的时候需要注意的是wiringpi对GPIO的编码方式以及BCM物理编码方式的区别,如下图给大家解释一下:
我们把注意力放在红色方框上,其他的分析方法也类似,其中physical两列是对应树莓派上引出的两排排针,顺序是拿着树莓派网卡空对着我,然后排针从上往下数即为图中的顺序,wpi列对应的wirpingpi函数所传递的参数,而BCM列则为BCM编码方式下的GPIO编号。其实我们在使用wiringpi开发我们的程序的时候我们只需要关注两个参数,一个是wiringpi的GPIO编号,还有一个就是该GPIO对应在树莓派实际的物理排针位置。这里我们树莓派举个例子,比如我们需要操作树莓派第11和12GPIO,就是对应树莓派上,第6行上面的两个排针,数好位置之后,我们发现树莓派上第6行上面的两个排针所对应的wpi编号为0和1,这是我们在使用wiringpi函数传递的参数为0和1即为操作物理上第11和12号GPIO。分析好GPIO的wiringpi和物理对应方式之后我们就可以开始使用QT进行编程了,打开QT并建立工程,在主界面输入一下代码(需要在QT中配置一下wiringpi的库文件),如下图:
当编写好函数,使用QT编译完成之后我们可以发现目录下有一个执行的文件,这时候我们不能使用双击的运行(你使用双击方式运行可执行文件,发现并不能达到预期的效果,原因上面已经阐述过了),我们使用终端的方式运行该程序。
cd 可执行文件目录
sudo ./可执行文件最终的执行效果如下:
下面show一下运行的结果图:
可以从STM32的LCD屏幕上看书,每个500ms左右,其电平从0跳变成1,或者从1跳变成0,完成整个GPIO的测试功能。
相关文章推荐
- 树莓派 Learning 003 — GPIO 002 输入模式 — 按键控制LED
- 树莓派-通过Web控制GPIO针脚输出高低电平(改进版)
- stm32 GPIO原理: 输入和输出控制
- 树莓派-通过Web控制GPIO针脚输出高低电平
- 【Raspberry Pi 3试用体验】+WiringPi控制GPIO
- 驱动开发之二 --- 输入输出控制 【译文】
- 【Java】Eclipse 中 Java 从控制输入/输出的中文乱码
- C#控制台的输入和输出-Console类-从控制台输入
- 输入/输出 格式的控制_C++
- QT中如何使用cout cin cerr 进行输入和输出
- STM32的GPIO口的输出:开漏输出和推挽输出 浮空输入
- 标准C---输入输出函数及控制流程语句
- 第01章 CORE C++_C++ 基本结构_注释_输出语句_输入语句_初始化_条件控制_ASCII码值_转义字符_常量_变量_类型长度_运算符
- 控制命令窗口输入和输出
- ARM9的裸奔(一)——GPIO的输入与输出
- raspberry Pi on Archlinux, Install wiringPi , GPIO
- C++ Stream 的输入/输出格式控制
- C#控制台的输入和输出-Console类-输出到控制台
- 输入输出的格式控制 hex/dec/oct
- 输入输出流状态的查询和控制