0 前言
本来是准备写一篇用python控制GPIO的例子,结果发现太简单了,还是深入一些吧,多深入底层
接下来,我会按照下面的顺序来介绍:
1)GPIO控制器地址映射
2)GPIO主要控制寄存器介绍
3)GPIO操作流程
4)用C语言控制GPIO
6)用python来控制GPIO
1 概述
树莓派2B采用的CPU为BCM2836,外设部分和BCM2835完全一致,所以就可以参考BCM2835的寄存器手册
但是,这个寄存器手册笔误有点多,建议配合着wiki的勘误手册来看
CPU总共有54个IO,每个IO都可以复用,配置输入或者输出模式,单从GPIO部分来看,比较简单,无非是输入/输出,触法模式等,和一般的MCU没有太大差异
2 地址映射
BCM2835将BUS的地址空间,通过MMU映射到线性寻址空间,如下所示
这里,我们从左到右看,IO Peripherals的基地址为0x7E000000,然后映射后的基地址为0x20000000
也就是说外设的地址空间为0x20000000~0x20FFFFFF
接下来,在手册中,找到GPIO章节,查看寄存器地址,