GD32VF103之GPIO最小配置

时间:2024-04-02 09:54:29

GD32VF103之GPIO最小配置

longan nano是Sipeed(矽速科技)推出的开发板,使用兆易创新的gd32vf103cbt6芯片,该芯片是基于芯来科技的Nuclei Bumblebee处理器的32位通用微控制器,Bumblebee处理器是基于RISC-V架构指令集开发,由芯来科技(Nuclei System Technology)和*晶心科技(Andes Technology)联合开发。

 

gd32vf103cbt6跟stm32的使用非常相似,如果使用C开发,基本上与指令集架构没啥关系。本文介绍GPIO的最小配置,不使用sdk,直接操作寄存器,这样可以更加直观的了解芯片和外设。控制gpio就跟学编程语言打印hello world一样,是开始学习新知识的第一步。gd32vf103配置和使用gpio的基本步骤如下所示:

1、使能GPIO的时钟;

2、配置GPIO的属性参数;

3、设置或者读取引脚控制寄存器;

这里使用longan nano的三个led gpio为例,它们分别是PA1(绿)、PA2(蓝)和PC13(红)。

GD32VF103之GPIO最小配置

GD32VF103之GPIO最小配置

 

01、使能GPIO的时钟

 

根据系统架构示意图,可以看到GPIO都挂在APB2上。

GD32VF103之GPIO最小配置

通过用户手册在复位和时钟单元(RCU)可以找到RCU寄存器,它的基地址是0x40021000。然后找到RCU_APB2EN寄存器,它的地址偏移是0x18,寄存器的2到6位就是GPIO[A-E]的使能位。

GD32VF103之GPIO最小配置

将用到的GPIO时钟使能:

GD32VF103之GPIO最小配置

 

 

02、配置GPIO的属性参数

 

控制led需要将gpio配置为输出模式,在用户手册中通用和备用输入输出接口(GPIO和AFIO)一章可以找到GPIO寄存器,它们的基地址如图所示。

GD32VF103之GPIO最小配置

 

端口模式通过端口控制寄存器配置,端口控制寄存器0配置端口0-7,端口控制寄存器1配置端口8-15.。

GD32VF103之GPIO最小配置

GD32VF103之GPIO最小配置

一个端口由4位配置,低两位配置输入还是输出,并且决定输出的最大速度,高两位决定具体的输入输出形式。

GD32VF103之GPIO最小配置

PA1、PA2和PC13的具体配置如下:

GD32VF103之GPIO最小配置

这里要注意,0x1就表示二进制b0001,如果配置为b0101,十六进制应该是0x5,可千万别写成0x0101。

 

03、设置或者读取引脚控制寄存器

 

GPIO模式配置好后,就可以读取或者控制端口的状态了。

输入读取输入状态寄存器,然后查询对应的位的状态即可获得端口的值。

GD32VF103之GPIO最小配置

输出则可以用不同的方法控制。

可以使用端口输出控制寄存器控制输出高低:

GD32VF103之GPIO最小配置

可以使用端口位操作寄存器控制输出高低:

GD32VF103之GPIO最小配置

可以使用位清除寄存器让对应端口输入低电平:

GD32VF103之GPIO最小配置

这里说一下它们的区别,端口输出控制寄存器是直接决定端口状态的寄存器,它是1就输出高,是0就输出低。而后两个是通过控制端口输出控制寄存器来间接控制端口状态的。对后两个寄存器写1才会改变端口输出控制寄存器的值,写0不会改变端口输出控制寄存器的值。

GD32VF103之GPIO最小配置

所以如果通过端口输出控制寄存器控制端口,需要先读取、改变再写回(|=或者&=),而后两个寄存器可以直接赋值,只要不想改变的位是0即可(=)。

控制端口输出1可以通过端口输出控制寄存器和端口位操作寄存器;

控制端口输出0可以通过端口输出控制寄存器,端口位操作寄存器和位清除寄存器。

GD32VF103之GPIO最小配置

通过上面三步配置,GPIO基本的输入输出功能就可以使用了,点亮led就so easy了。下一篇文章我们使用内核的systick来实现延时的功能,这样就可以实现led闪烁和流水灯了。

GD32VF103之GPIO最小配置

bilibili:科G栈