最新发布的树莓派4B在烧录了官方系统buster以后,如果直接使用gpio readall去查看GPIO会出现错误。无法识别的情况,需要根据以下步骤进行wiringPi的更新: 登陆后打开一个终端输入: - cd /tmp
$ ]+ l) r$ C# s2 U - wget https://project-downloads.drogon.net/wiringpi-latest.deb$ o8 Q4 G. l2 |$ z) A a- u
- sudo dpkg -i wiringpi-latest.deb
复制代码然后再使用 检查版本信息,确保版本为:2.52即可。 然后再执行:gpio readall
' V8 u3 Y3 u3 A% S9 k- +-----+-----+---------+------+---+---Pi A+--+---+------+---------+-----+-----+- _: k0 K2 T7 d) R" F
- | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
0 j8 A% `0 G4 n5 w7 ]* c - +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+( R: `; Q* W4 Q; w9 T% Q5 z; g
- | | | 3.3v | | | 1 || 2 | | | 5v | | |
. \. z& H( @$ L- B' C - | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | |
3 N) I6 b& m4 }+ D5 X - | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | |' _8 X( Z9 r3 d- F$ l
- | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |: f$ [, k6 [, v% p$ i& h* C
- | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 |9 J p* a" p1 v0 F
- | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 |
9 |' z4 ]- v+ n - | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |/ u& o% A! u/ G0 D$ m
- | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |
$ J/ T- D) l% K9 I* n) F - | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |- W2 n9 M( g B. S# T2 H& E
- | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |$ p5 Z1 d `/ K$ K+ G
- | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |
! ~, Q8 H, H! ?9 p! _ k - | 11 | 14 | SCLK | OUT | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |
: e6 f' x5 P" X6 S" X# ^+ x0 c4 x9 ]( ^ - | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |5 n5 B e+ b) b: g, `
- | 0 | 30 | SDA.0 | OUT | 0 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
8 |3 v7 j5 [( h0 [( @ - | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |) g5 H$ [/ h9 ~; k2 A
- | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
7 K6 @' H! G! Z: K6 V! I - | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |5 S: L1 S1 s- m2 q7 j: F6 b
- | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
6 \5 r1 d1 f# |. } - | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |; _8 V7 F+ o6 H
- | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |8 x1 z1 k; w$ `+ H0 i
- +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
! b* L9 W4 r; m) E) j$ {: N - | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |, a+ B1 L+ U1 L+ d; }
- +-----+-----+---------+------+---+---Pi A+--+---+------+---------+-----+-----++ n5 w5 B2 A" B/ I" @, u
复制代码这时候就可以继续像往常那样使用GPIO的引脚进行编程了。 我们尝试一下使用gpio 引脚点亮一个LED灯。LED灯接在物理引脚12号,名称GPIO.1 针对WPi 引脚为1, BCM引脚为18号。 编写一个C源码:led.c 调用gcc编译: gcc -o led -lwiringPi led.c 执行: ./led 终端显示:
8 E( D! q; F; M1 c& v& Y由于手头的电阻阻值比较大,效果不明显,所以去掉了电阻,实际上大家应该加个220欧姆的电阻来保护LED
. ~( i9 A1 K# g4 v4 Q c% U8 ] z
4 L0 G' M/ V, J! c( j |