关于树莓派Pi3B的GPIO引脚检测输入电平问题,满满的细节干货
最近在测试树莓派GPIO引脚输入。想着外面给GPIO输入高低电平,能让树莓派检测出来。折腾了很久,才解决。现在把自己遇到问题和解决办法记录下来。
官方文档:BCM的数据手册
我们先看树莓派GPIO功能框图:
起初我认为:1.配置好引脚方向为输入方向2.从PinLevelRegs取走电平值就可以了。
后来发现还少了一个重要的操作:
GPPUD寄存器是控制引脚是上拉或者下拉。但是需要与GPPUDCLK寄存器配合使用。需要GPPUDCLK配合时钟线打开。
综上所述,如果要将GPIO0配置成检测输入电平,可以如下编写代码:
*gpfsel0=~(0x7);//GPIO0inputdirection*gppudclk0
=0x1;//AssertGPIO0clockline*gppud=(~0x2);//gpiopulldown*gppud
=0x1;
以上是我遇到的问题,以及解决办法。希望和大家一起交流,同时希望得到大家的指正。
再多说两句,树莓派不是拼性能的设备,拼的是生态+低功耗+低价格。
3b的性能其实也挺不错了,不过还是不适合跑密集计算和图形计算。
再就是树莓派3b的网卡基于usb2.0的,所以带宽很低(网卡),所以不适合做多媒体服务器。
适合什么?满足,低功耗(低性能)的基本都适合。
具体多低?其实3b性能也是很低,比如做个小web服务器还是可以的,跑桌面卡的怀疑人生。
我测我是了一下php,在默认安装wordpress的情况下,响应速度很慢(2-3秒),不建议使用(除非你进行深度cache优化)。
我也测试了Java,由于是字节码程序,性能比php好不少,不过低于go的web程序,再加上java的一大堆框架耗费资源太厉害,抬高了对性能的要求(jdbc的平均毫秒左右,ssh的1-2秒左右)。
我也测试了python的web程序(基于django),由于是解释执行,性能低于java,平均1.5-2.5秒左右。
个人认为,如果用树莓派做web服务器,最好用go语言来写,机器码执行速度优势还是大。
如果是对性能要求不高的应用,什么语言的程序都没什么问题。
我目前主要用来做私人github服务器(基于gogs)。性能刚刚好基本满足(平均不到毫秒的响应速度),3-4个人同时访问问题不大,应该能基本满足10来个人的正常使用。
///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我也能领取哦///