1.寄存器映射
GPIO中包含的寄存器见表5-1。每一个GPIO端口都可通过两种总线槽访问。传统的一种称为先进外设总线(APB),向后兼容以前的产品。另外一种是先进高端总线(AHB),它虽和APB总线一样拥有相同的寄存器映射,却提供了更好的连续访问性能。
表5-1 GPIO寄存器映射
(续)
●GPIO端口A(APB):0x4000.4000。
●GPIO端口A(AHB):0x4005.8000。
●GPIO端口B(APB):0x4000.5000。
●GPIO端口B(AHB):0x4005.9000。
●GPIO端口C(APB):0x4000.6000。
●GPIO端口C(AHB):0x4005.A000。
●GPIO端口D(APB):0x4000.7000。
●GPIO端口D(AHB):0x4005.B000。
●GPIO端口E(APB):0x4002.4000。
●GPIO端口E(AHB):0x4005.C000。
●GPIO端口F(APB):0x4002.5000。
●GPIO端口F(AHB):0x4005.D000。
2.几个常用的寄存器描述
(1)GPIO端口控制寄存器(GPIOPCTL),偏移量0x52C
GPIOPCTL寄存器与GPIOAFSEL寄存器协作为每个GPIO引脚(当使用复用功能模式时)选择具体的外设信号。GPIOAFSEL寄存器中大部分的位在复位时是清零的,所以大部分GPIO引脚默认配置为GPIO功能。在GPIOAFSEL寄存器中某位被置位时,表示相应的GPIO引脚由相关外设控制。GPIOPCTL寄存器可以为每个GPIO引脚选择使用何种外设功能,因此在信号定义时提供了高度的灵活性,如图5-4所示。
图5-4 端口控制寄存器(GPIOPCTL)
位/字段 名称 类型 复位 描述
31:28 PMC7 R/W - 端口复用控制器7
该区域的值控制着端口7的配置
27:24 PMC6 R/W - 端口复用控制器6
该区域的值控制着端口6的配置
15:12 PMC3 R/W - 端口复用控制器3
该区域的值控制着端口3的配置
11:8 PMC2 R/W - 端口复用控制器2
该区域的值控制着端口2的配置
7:4 PMC1 R/W - 端口复用控制器1
该区域的值控制着端口1的配置
3:0 PMC0 R/W - 端口复用控制器0
该区域的值控制着端口0的配置
(2)GPIO数据寄存器(GPIODATA),偏移量0x000
在软件控制模式中,如果通过GPIO方向寄存器(GPIODIR)将各个引脚配置成输出,那么写入GPIODATA寄存器的值将被发送到GPIO端口引脚上。
为了对GPIODATA寄存器执行写入操作,由地址总线位[9∶2]产生的相关屏蔽位必须被置位。否则,位的值不会被写入操作改变。(www.xing528.com)
同样,从该寄存器读取的值由从访问数据寄存器的地址处获取的屏蔽位[9∶2]的情况来决定。如果地址屏蔽位为1,那么读取GPIODATA中相应位的值;如果地址屏蔽位为0,那么不管GPIODATA中相应位的值是什么,读取得到的结果都是0。
如果各自的引脚被配置成输出,那么读取GPIODATA将返回最后写入的位值;或者当这些引脚被配置成输入时,将返回相应的输入引脚上的值。复位时所有的位都是清零的,如图5-5所示。
图5-5 GPIO数据寄存器(GPIODATA)
位/字段 名称 类型 复位 描述
31:8 保留 RO 0x0000.00 软件不可依赖保留位的值。为了兼容未来的产品,保留位的值在读取-修改-写入操作过程中应保持不变
7:0 DATA R/W 0x00 GPIO数据
该寄存器被虚拟地映射到地址空间的256个单元中。为便于通过单独的驱动器读写这些寄存器,从其读取的值和写入其中的值可通过8条地址线[9:2]屏蔽。读取该寄存器将返回其当前状态。写入该寄存器仅影响那些没有被ADDR[9:2]屏蔽的位和被配置成输出的位
(3)GPIO方向寄存器(GPIODIR),偏移量0x400
在GPIODIR寄存器中的某位被置位会将相应的引脚配置成输出,而清零的话就是配置为输入。复位时,所有的位都被清零,这意味着所有GPIO端口默认为输入状态,如图5-6所示。
图5-6 GPIO方向寄存器(GPIODIR)
位/字段 名称 类型 复位 描述
31:8 保留 RO 0x0000.00 软件不可依赖保留位的值。为了兼容未来的产品,保留位的值在读取-修改-写入操作过程中应保持不变
7:0 DIR R/W 0x00 GPIO 数据方向
值 描述
0 相应的引脚为输入
1 相应的引脚为输出
(4)GPIO中断事件寄存器(GPIOIEV),偏移量0x40C
当GPIOIEV寄存器中某位被置位时,相应的引脚由上升沿或是高电平触发中断,具体由GPIO中断检测寄存器(GPIOIS)中的位控制。清零一个位则表示相应的引脚由下降沿或是低电平触发,具体还是由GPIOIS中的位控制。复位时所有的位都是清零的,如图5-7所示。
图5-7 GPIO中断事件寄存器(GPIOIEV)
位/字段 名称 类型 复位 描述
31:8 保留 RO 0x0000.00 软件不可依赖保留位的值。为了兼容未来的产品,保留位的值在读取-修改-写入操作过程中应保持不变
7:0 IEV R/W 0x00 GPIO 中断事件
值 描述
0 相应引脚上的下降沿或低电平触发中断
1 相应引脚上的上升沿或高电平触发中断
(5)GPIO复用功能选择寄存器(GPIOAFSEL),偏移量0x420
如果某位被清零,则表示相应的引脚用作GPIO功能,并受GPIO寄存器控制。某位被置位则表示相应的GPIO线受相关外设控制。每个GPIO上都有几个不同的复用外设功能。可以通过GPIO端口控制寄存器(GPIOPCTL)来选择其中的一个所需的功能,如图5-8所示。
图5-8 复用功能选择寄存器(GPIOAFSEL)
位/字段 名称 类型 复位 描述
31:8保留RO0x0000.00软件不可依赖保留位的值。为了兼容未来的产品,保留位的值在读取-修改-写入操作过程中应保持不变
7:0AFSELR/W-复用功能选择
值 描述
0 相应引脚为GPIO功能,受GPIO寄存器控制
1 相应引脚为外设功能,由复用硬件功能控制
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。