当前位置:数码通 > 硬件

HK32MCU应用笔记(12) | HK32F103xC/D/E的GPIO应用及注意事项

来源于 数码通 2023-09-30 18:32

HK32F103x/C/D/E是航顺芯片推出的中大容量103系列芯片。作为32位MCU,最常用的功能就是GPIO。 HK32F103x的每个GPI/O端口有2个32位配置寄存器(GPIOx_CRL、GPIOx_CRH)、2个32位数据寄存器(GPIOx_IDR和GPIOx_ODR)和1个32位位/复位寄存器(GPIOx_BSRR)、16位复位寄存器(GPIOx_BRR)和32位锁定寄存器(GPIOx_LCKR)。

每个I/O端口的特定硬件特性,GPIO端口的每一位都可以通过软件单独配置为多种模式。

输入浮动

进入引体向上

输入下拉菜单

模拟 输入

开漏输出

推挽输出

推挽复用功能

开漏复用功能

每个 I/O 端口位均可自由可编程,但是 I/O 端口寄存器必须作为 32 位字进行访问(不允许半字或字节访问)。 GPIOx_BSRR 和 GPIOx_BRR 寄存器允许对任何 GPIO 寄存器进行读取/更改独立访问;这样,在读取和更改访问之间生成 IRQ 时就不会出现危险。每个 GPIO 引脚均可通过软件配置为输出(推挽或开路)、输入(带或不带上拉或下拉)或其他外设功能端口。大多数 GPIO 引脚与数字或模拟外设共享。所有 GPIO 引脚都具有高电流能力。如果需要,可以通过特定操作锁定 I/O 引脚的外设功能,以避免意外写入 I/O 寄存器。

下图是I/O端口位的基本结构:

5V兼容I/O端口位的基本结构

注: VDD_FT 是 5V 耐压 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的效率显着提升。

以上寄存器的介绍,请参考我们的HK32F103xC/D/E应用手册。

来源:航顺芯片

审稿编辑:唐子红

-->
登录后参与评论