通用I/O端口
端口引脚结构
每个端口引脚可配置为输入或输出操作。 在输入模式下(复位后的缺省模式) , 输出驱动器关闭(高阻) , 引脚上的实际电压值由施密特触发器译成逻辑0 或1, 可从只读寄存器Pn_IN 中读出。 从引脚到输入寄存器Pn_IN 和到AltDataIn 的输入线功能与端口引脚的工作模式(输入或输出) 无关。这意味着当端口工作在输出模式时, 引脚电平可由软件从 Pn_IN 中读出、 外设可使用该引脚电平作为输入。
在输出模式下, 输出驱动器被激活,通过Pn_IOCR 寄存器使能或禁止输出驱动, 从而实现输入和输出模式的切换。Pn_IOCR 还用于控制输出驱动的类型; 当引脚用作输入时, Pn_IOCR 还决定是否使用内部弱上拉或下拉器件和引脚相连,
若引脚用作通用输出口, 软件控制(Pn_IOCR 寄存器) 复用器选通输出数据寄存器 Pn_OUT。由于软件可对 Pn_OUT 置位或清零, 因此它可直接影响引脚的状态。 若引脚用作片上外设的输出, 输出复用器会选通复用功能输出线 ALT1 - ALT3, 将其送至输出驱动电路。
用作通用输出线时, 端口上每个引脚的逻辑电平可独立被修改, 通过设置输出修改寄 存器Pn_OMR 中各引脚对应的控制位来实现。Pn_OMR 中的控制位可对Pn_OUT 寄存器中的对应位进行置位、 清零、 取反或保持不变。
寄存器
1.端口输入/输出控制寄存器(以下图为例)
端口输入/输出控制寄存器用于选择GPIO 端口引脚的输入输出驱动功能和特性。 通过寄存器的相应位域PCx(x = 0-15) 选择端口方向(输入或输出) 、 输入引脚的上拉或下 拉器件、 输出引脚的推挽或漏极开路功能。 每个32 位的端口输入/输出控制寄存器控制四条GPIO 端口线:
寄存器 Pn_IOCR0 控制 Pn.[3:0]端口线
寄存器 Pn_IOCR4 控制 Pn.[7:4]端口线
寄存器 Pn_IOCR8 控制 Pn.[11:8]端口线
寄存器 Pn_IOCR12 控制 Pn.[15:12]端口线
端口输入/输出控制寄存器(由位域PCx 组成) 的结构如下所示。 每个PCx 位域控制一条端口线Pn.x。
下图为根据设置PCX值来设置输入/输出功能
2.驱动模式寄存器
对于配置为output (PCx)的端口,可以通过相关的PDx位字段(寄存器Pn_PDR0/1)配置速度等级。(可参考手册)
3.引脚功能决策控制寄存器
TCC27x GPIO线的pad结构提供了选择数字输入或模拟ADC输入功能。
4.端口输出寄存器
Pn_IOCRx 选择某 GPIO 引脚用作输出时, 由端口输出寄存器决定该引脚的电平。若Pn_OUT.Px(x = 0-15) 置0, 则相应引脚输出低电平; 若Pn_OUT.Px(x = 0-15) 置1, 则相应引脚输出高电平。 请注意: 还可通过向端口输出修改寄存器Pn_OMR写入适当值单独置位/清零/取反Pn_OUT.Px。
5.端口输出修改寄存器(该寄存器与Pn_OUT.Px寄存器均改变端口输出,但功能不同)
端口输出修改寄存器可用于置位、 复位或取反端口输出寄存器中的相应位, 从而修改各端口线上的逻辑状态。
PCL位:端口n 置位位x
功能:设置这个位将清除或取反端口输出寄存器Pn_OUT中相应的位。
PRx位:端口n 复位位x
功能:设置这个位将在端口输出寄存器Pn_OUT中设置或取反相应的位
6.端口输出改变寄存器(以下局部图)
PSx位:端口n 置位位x
功能:置位该位将会置位端口输出寄存器Pn_OUT中的相应位。
7.端口输出清除寄存器
PCL位:端口n 置位位x
功能:设置这个位将清除端口输出寄存器Pn_OUT中相应的位。
8.端口输入寄存器
Px(x = 0-15) 该位指示输入引脚Pn.x 上的逻辑电平。
0B Pn.x 的输入电平为0
1B Pn.x 的输入电平为1