电子说
HK32F103x/C/D/E是航顺芯片推出的中大容量的103系列芯片,而作为32位MCU最常用功能就是GPIO。HK32F103x的每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR 和 GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。
每个I/O端口的特定硬件特征,GPIO端口的每个位可以由软件分别配置成多种模式。
输入浮空
输入上拉
输入下拉
模拟输入
开漏输出
推挽式输出
推挽式复用功能
开漏复用功能
每个I/O端口位可以自由编程,然而必须按照32位字访问I/O端口寄存器(不允许半字或字节访问)。GPIOx_BSRR 和 GPIOx_BRR 寄存器允许对任何GPIO寄存器进行读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。每个GPIO管脚都可以由软件配置成输出(推拉或开路)、输入(带或不带上拉或下拉)或其它的外设功能端口。多数 GPIO 管脚都与数字或模拟的外设共用。所有的 GPIO 管脚都有大电流通过能力。在需要的情况下,I/O 管脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入 I/O 寄存器。
下图就是I/O 端口位的基本结构:
5伏兼容 I/O 端口位的基本结构
注意:VDD_FT 对5伏容忍I/O脚是特殊的,它与VDD不同
端口位配置表
输出模式位
单独的位设置或位清除
当对GPIOx_ODR的个别位编程时,软件不需要禁止中断:在单次APB2写操作里,可以只更改一个或多个位。这是通过对“置位/复位寄存器”(GPIOx_BSRR,复位是 GPIOx_BRR)中想要更改的位写’1’来实现的。没被选择的位将不被更改。
复用功能(AF)
使用默认复用功能前必须对端口位配置寄存器编程。
● 对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动
注意:也可以通过软件来模拟复用功能输入引脚,这种模拟可以通过对 GPIO 控制器编程来实现。此时,端口应当被设置为复用功能输出模式。显然,这时相应的引脚不再由外部驱动,而是通过 GPIO 控制器由软件来驱动。
● 对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。
● 对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式。
如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。
输入配置
当 I/O 端口配置为输入时:
● 输出缓冲器被禁止
● 施密特触发输入被激活
● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 对输入数据寄存器的读访问可得到I/O状态
输出配置
当 I/O 端口被配置为输出时:
● 输出缓冲器被激活
─ 开漏模式:输出寄存器上的’0’激活 N-MOS,而输出寄存器上的’1’将端口置于高阻状态(P-MOS 从不被激活)。
─ 推挽模式:输出寄存器上的’0’激活 N-MOS,而输出寄存器上的’1’将激活 P-MOS。
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器
● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态
● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。
复用功能配置
当 I/O 端口被配置为复用功能时:
● 在开漏或推挽式配置中,输出缓冲器被打开
● 内置外设的信号驱动输出缓冲器(复用功能输出)
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器
● 开漏模式时,读输入数据寄存器时可得到I/O口状态
● 在推挽模式时,读输出数据寄存器时可得到最后一次写的值
模拟输入配置
当 I/O 端口被配置为模拟输入配置时:
● 输出缓冲器被禁止
● 禁止施密特触发输入,实现了每个模拟I/O引脚上的零消耗。施密特触发输出值被强置为’0’
● 弱上拉和下拉电阻被禁止
● 读取输入数据寄存器时数值为’0’
下面就HK32F103xC/D/E在操作上需要应用开发者注意的。
用户在使用HK32F103xC/D/E时,使用软件循环产生定时,用GPIO翻转模拟时序,发现跟友商不一致。这是我们设计跟友商不一样。
解决方法如下:
不开 Cache,HK32F103xCxDxE 效率低一点。
打开 Cache,HK32F103xCxDxE 效率明显提高。
以上有关寄存器的介绍可以参考我们HK的HK32F103xC/D/E的应用手册。
来源:航顺芯片
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !