首页 理论教育 ARMCortexM4寄存器映射及描述

ARMCortexM4寄存器映射及描述

时间:2023-11-17 理论教育 版权反馈
【摘要】:表5-1GPIO寄存器映射(续)下面给出各个GPIO端口的基地址和偏移量:●GPIO端口A:0x4000.4000。在GPIOAFSEL寄存器中某位被置位时,表示相应的GPIO引脚由相关外设控制。同样,从该寄存器读取的值由从访问数据寄存器的地址处获取的屏蔽位[9∶2]的情况来决定。读取该寄存器将返回其当前状态。

ARMCortexM4寄存器映射及描述

1.寄存器映射

GPIO中包含的寄存器见表5-1。每一个GPIO端口都可通过两种总线槽访问。传统的一种称为先进外设总线(APB),向后兼容以前的产品。另外一种是先进高端总线(AHB),它虽和APB总线一样拥有相同的寄存器映射,却提供了更好的连续访问性能。

表5-1 GPIO寄存器映射

978-7-111-51624-8-Chapter05-4.jpg

(续)

978-7-111-51624-8-Chapter05-5.jpg

下面给出各个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所示。

978-7-111-51624-8-Chapter05-6.jpg

图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所示。

978-7-111-51624-8-Chapter05-7.jpg

图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所示。

978-7-111-51624-8-Chapter05-8.jpg

图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所示。

978-7-111-51624-8-Chapter05-9.jpg

图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所示。

978-7-111-51624-8-Chapter05-10.jpg

图5-8 复用功能选择寄存器(GPIOAFSEL)

位/字段 名称 类型 复位 描述

31:8保留RO0x0000.00软件不可依赖保留位的值。为了兼容未来的产品,保留位的值在读取-修改-写入操作过程中应保持不变

7:0AFSELR/W-复用功能选择

值 描述

0 相应引脚为GPIO功能,受GPIO寄存器控制

1 相应引脚为外设功能,由复用硬件功能控制

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈