最活跃的基金中的基金又来了
06-17
一、Cortex M3 的 GPIO 端口特性 在介绍 GPIO 端口功能之前,有必要先说明一下 M3 的结构框图,以便更好地理解总线结构和GPIO功能。
地点。
Cortex M3结构框图 从图中可以看到,GPIO端口连接到APB总线,并且M3有两个AHB转APB桥,GPIO直接连接到AHB矩阵,这可以减少CPU和DMA控制器之间的竞争,实现更高的性能。
APB 总线桥被配置为写缓冲区,允许 CPU 或 DMA 控制器直接操作 APB 外设,而无需等待总线写操作完成。
M3数字I/O功能:高速GPIO口,其寄存器移至外设AHB总线,可按字节、半字、字寻址。
位级设置和清除寄存器允许单个指令设置和清除端口的任何位。
所有 GPIO 端口寄存器都支持 M3 位带操作。
整个端口值可以用一条指令写入。
GPIO 端口寄存器可以由 GPDMA 控制器访问,并且可以执行 DMA 数据操作以将其与 DMA 请求同步。
可以控制单个I/O端口的方向。
所有 I/O 端口在复位后默认为上拉输入。
(为什么呢?因为单片机连接的设备很多,复位后如果作为输出使用,控制器的电平状态不稳定可能会导致外围设备动作,从而造成不良影响,所以一半作为输入使用复位后的状态。
) 可产生中断的M3数字端口:PORT0和PORT2端口的每个引脚都可以提供中断功能;每个端口上的中断都可以编程为在上升沿、下降沿或边沿生成中断;边沿检测是异步的,因此可以在没有时钟的情况下运行(例如掉电模式)。
使用此功能,无需电平触发中断;可掉电唤醒;该寄存器为软件提供挂起的上升沿中断、挂起的下降沿中断和整个挂起的 GPIO 中断; GPIO0 和 GPIO2 中断和外部中断 3 个事件共享相同的 NVIC 通道。
2. GPIO 口寄存器说明 Cortex M3 引脚寄存器说明: PINMODEx 为引脚模式选择寄存器,使用前必须配置。
引脚模式选择寄存器位 PINMODEx 功能 复位后的值 00 引脚使能上拉电阻 00 01 继电器模式 10 该引脚无片内上拉 或下拉电阻 11 该引脚使能下拉电阻 继电器模式说明:当该引脚为逻辑高电平时,继电器模式使能上拉电阻;当引脚处于逻辑低电平时,继电器模式会启用下拉电阻,以便引脚在配置为输入且不受外部驱动时保持其最后已知状态。
PINSELx:功能选择寄存器。
用于设置PORT引脚的功能。
当每个 PINSELx 位为 0 时,它将用作 GPIO 端口。
FIOxDIR:GPIO 端口方向寄存器,单独控制每个端口引脚的方向,可以按字节(8 位)、半字(16 位)和字长(32 位)数据进行访问。
FIOxMASK:掩码寄存器。
任何写或读操作只有当寄存器相应位为“0”时才有效。
FIOxPIN:引脚值寄存器。
只要该引脚未配置为 ADC,就可以通过所有其他方式从此位读取端口的当前实际状态。
注意:如果读取 FIOPIN 寄存器,则无论物理引脚的状态如何,FIOMASK 寄存器中被“1”屏蔽的位将始终读取为 0。
FIOxSET:输出引脚的状态。
写入 1 会使相应的端口引脚产生高电平。
写0没有效果。
读取该寄存器将返回端口输出寄存器的当前内容。
只有 FIOMASK 中为 0 的位(即未屏蔽位)可以更改。
FIOxCLR:控制输出引脚的状态。
写入 1 会使相应的端口引脚产生低电平。
写0没有效果。
只有 FIOMASK 中为 0 的位(即未屏蔽位)可以更改。
2.1GPIO 端口方向寄存器 FIOxDIR (FIO0DIR??FIO4DIR-0xC??0xC) 当引脚配置为 GPIO 功能时,该寄存器可用于控制引脚的方向。
不一定要根据每个引脚的功能来设置其方向。
注:GPIO 引脚 P0.29 和 P0.30 与 USB D+/- 引脚共用,且方向相同。
如果 FIO0DIR 寄存器中 FP0DIR 位 29 或位 30 配置为 0,则 P0.29 和 P0.30 均为输入。
如果 FP0DIR 位 29 和位 30 配置为 1,则 P0.29 和 P0.30 均为输出。
高速 GPIO 端口方向寄存器位描述 位 符号 值 描述 复位值 31:0(字长数据) FP0DIR FP1DIR FP2DIR FP3DIR FP4DIR 0 1 控制的引脚为输入引脚 控制的引脚为输出引脚 0 字和半字的操作基本类似,只是可以通过8位寄存器或16位寄存器分别控制方向。
这里我就不解释了。
请参考《深入浅出Cortex-M3 LPC》。
2.2GPIO 端口输出设置寄存器 FIOxSET (FIO0SET??FIO7SET - 0xC??0xC) 当引脚处于输出模式时 当配置为 GPIO 时,该寄存器在端口上产生高电平输出别针。
当该寄存器的某些位写入“1”时,相应引脚产生高电平。
写“0”没有任何作用。
如果需要引脚输出低电平或第二功能,则向 FIOxSET 中的相应位写入 1 无效。
读取 FIOxSET 寄存器返回该寄存器的值,该值由之前对 FIOxSET 和 FIOxCLR(或前面提到的 FIOxPIN)的写入确定,并且不反映任何外部环境对 I/O 引脚的影响。
通过 FIOxSET 寄存器访问的端口引脚受 FIOxMASK 寄存器中相应位的限制。
高速 GPIO 端口输出设置寄存器位描述 位 符号 值 描述 复位值 31:0(字长数据) FP0SET FP1SET FP2SET FP3SET FP4SET 0 1 受控引脚输出不变。
受控引脚输出设置为高电平 0 2.3GPIO 端口输出清除寄存器 FIOxCLR (FIO0CLR??FIO07CLR - 0xC01C??0xC09C) 当引脚配置为 GPIO 输入时,该寄存器在端口引脚处生成低电平输出模式。
将“1”写入某些位会导致相应引脚上出现低电平,并清除 FIOxSET 寄存器中的相应位。
写“0”没有任何作用。
如果引脚配置为输入或其他功能,则写入 FIOxCLR 对该引脚没有影响。
通过 FIOxCLR 寄存器访问的端口引脚受 FIOxMASK 寄存器中相应位的限制。
高速 GPIO 端口输出清除寄存器 位描述 位 符号 值 描述 复位值 31:0(字长数据) FP0CLR FP1CLR FP2CLR FP3CLR FP4CLR 0 1 受控引脚输出不变。
受控引脚输出设置为低电量 Ping 0 2.4GPIO 端口引脚值寄存器 FIOxPIN (FIO0PIN??FIO7PIN- 0xC??0xC) 该寄存器提供可配置为执行数字- 操作的端口引脚的值只有功能。
无论引脚是否配置为输入或输出、GPIO 或其他可选数字功能,该寄存器都会给出引脚的当前逻辑值。
例如,特殊端口引脚可能具有可选功能,例如 GPIO 输入、GPIO 输出、UART 接收和 PWM 输出。
无论引脚配置为何种功能,都可以从相应的 FIOxPIN 寄存器读取其当前逻辑状态。
如果引脚配置为模拟功能,则在选择模拟配置时无法读取引脚状态。
选择一个引脚作为 A/D 输入会断开该引脚的数字部分。
在这种情况下,从 FIOxPIN 寄存器读取的引脚值无效。
当写入 FIOxPIN 寄存器时,FIOxPIN 寄存器的值被保存到端口输出寄存器中,而无需使用 FIOxSET 和 FIOxCLR 寄存器来获取整个写入值。
由于此属性会影响整个端口,因此在应用时请务必小心。
通过 FIOxPIN 寄存器访问的端口引脚受 FIOxMASK 寄存器中相应位的限制。
只有屏蔽寄存器中屏蔽为 0 的引脚才与高速 GPIO 端口引脚值寄存器的当前内容相关联。
高速 GPIO 端口引脚值寄存器位描述 位 符号 值 描述 复位值 31:0(字长数据) FP0VAL FP1VAL FP2VAL FP3VAL FP4VAL 0 1 受控引脚输出设置为低电平 受控引脚输出设置为高电平 0 2.5 高速GPIO端口屏蔽寄存器FIOxMASK(FIO0MASK) ?FIO7MASK - 0xC??0xC) 该寄存器用于屏蔽某些端口引脚。
无法通过 FIOxPIN、FIOxSET 或 FIOxCLR 寄存器对屏蔽引脚进行写访问。
屏蔽寄存器在读取 FIOxPIN 寄存器时也会过滤相应端口的内容。
该寄存器中的“0”位允许通过读或写访问来访问相应的物理引脚。
如果该寄存器中的某个位为“1”,则相应位不会因写访问而更改,也不会在读操作时反映在更新的 FIOxPIN 寄存器中。
高速 GPIO 端口引脚值寄存器位描述 位 符号 值 描述 复位值 31:0(字长数据) FP0VAL FP1VAL FP2VAL FP3VAL FP4VAL 0 1 受控的引脚输出设置为低级别,将受控的引脚输出设置为高级别 0 2.1GPIO端口方向寄存器寄存器(fio0dir ?? fio4dir ?? fio4dir - 0xC??0xC) 当引脚配置为 GPIO 功能时,该寄存器可用于控制引脚的方向。
不一定要根据每个引脚的功能来设置其方向。
注:GPIO 引脚 P0.29 和 P0.30 与 USB D+/- 引脚共用,且方向相同。
如果 FIO0DIR 寄存器中 FP0DIR 位 29 或位 30 配置为 0,则 P0.29 和 P0.30 均为输入。
如果 FP0DIR 位 29 和位 30 配置为 1,则 P0.29 和 P0.30 均为输出。
高速 GPIO 端口方向寄存器位描述 位 符号 值 描述 复位值 31:0(字长数据) FP0DIR FP1DIR FP2DIR FP3DIR FP4DIR 0 1 控制的引脚为输入引脚 控制的引脚为输出引脚 0 字和半字的操作基本类似,只是可以控制通过8位寄存器或16位寄存器仅控制方向。
这里就不做解释了。
请参考《深入浅出Cortex-M3 LPC》。
2.2GPIO 端口输出设置寄存器 FIOxSET (FIO0SET??FIO7SET - 0xC??0xC) 当引脚配置为输出模式 GPIO 时,该寄存器在端口引脚上产生高电平输出。
当该寄存器的某些位写入“1”时,相应引脚产生高电平。
写“0”没有任何作用。
如果需要引脚输出低电平或第二功能,则向 FIOxSET 中的相应位写入 1 无效。
读取 FIOxSET 寄存器返回该寄存器的值,该值由之前对 FIOxSET 和 FIOxCLR(或前面提到的 FIOxPIN)的写入确定,并且不反映任何外部环境对 I/O 引脚的影响。
通过 FIOxSET 寄存器访问的端口引脚受 FIOxMASK 寄存器中相应位的限制。
高速 GPIO 端口输出设置寄存器位描述 位 符号 值 描述 复位值 31:0(字长数据) FP0SET FP1SET FP2SET FP3SET FP4SET 0 1 受控引脚输出不变。
受控引脚输出设置为高电平 0 2.3GPIO 端口输出清除寄存器 FIOxCLR (FIO0CLR??FIO07CLR - 0xC01C??0xC09C) 当引脚配置为 GPIO 输入时,该寄存器在端口引脚处生成低电平输出模式。
向某些位写入“1”会导致相应引脚产生低电平并清除 FIOxSET 寄存器的相应位。
写“0”没有任何作用。
如果引脚配置为输入或其他功能,则写入 FIOxCLR 对该引脚没有影响。

通过 FIOxCLR 寄存器访问的端口引脚受 FIOxMASK 寄存器中相应位的限制。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-18
06-18
06-17
06-17
06-21
06-17
06-18
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现