赞
踩
GD32系列文章均采用KEIL5(V5.35版本),芯片包及固件库版本V3.2.0,使用GD32F407VGT6芯片。
相关文档下载地址,后续更新内容也会放在这个文件路径中。
链接:https://pan.baidu.com/s/1qJEMaxVjLQHTjE1yh4df6Q
提取码:amvj
本章将GD32F407和STM32F407的GPIO进行对比。
其中AHB1PERIPH_BASE地址为:
其中PERIPH_BASE地址为:
那么GPIOA的基地址为:
0x4000 0000 + 0x0002 0000 = 0x4002 0000
那么依次可以得到:
GPIOA基地址:0x4002 0000
GPIOB基地址:0x4002 0400
GPIOC基地址:0x4002 0800
GPIOD基地址:0x4002 0C00
GPIOE基地址:0x4002 1000
GPIOF基地址:0x4002 1400
GPIOG基地址:0x4002 1800
GPIOH基地址:0x4002 1C00
GPIOI基地址:0x4002 2000
STM32F4XX中文参考手册第53页
GD32F4XX 用户手册7.4章节 171页有相应的介绍。
gd32f4xx_gpio.h中有相应的说明
在gd32f4xx.h中,GPIO_BASE 等于AHB1_BUS_BASE
AHB1_BUS_BASE等于 0x4002 0000,因此GPIO_BASE基地址等于 0x4002 0000,GPIOA的偏移量为0,因此也等于 0x4002 0000。
根据地址偏移量,不难得到其他GPIO的基地址:
GPIOA基地址:0x4002 0000
GPIOB基地址:0x4002 0400
GPIOC基地址:0x4002 0800
GPIOD基地址:0x4002 0C00
GPIOE基地址:0x4002 1000
GPIOF基地址:0x4002 1400
GPIOG基地址:0x4002 1800
GPIOH基地址:0x4002 1C00
GPIOI基地址:0x4002 2000
对比STM32F407和GD32F407,GPIO外设的基地址完全一样,其实芯片也是P2P兼容,STM32F407最高频率为168MHZ,GD32F407最高频率为200MHZ。
STM32F407的GPIO共有10个寄存器
在STM32中GPIO的寄存器是以结构体的方式进行访问,其他外设都是如此。
GD32F407的GPIO寄存器是12个,前面10个寄存器跟STM32F407一模一样,功能也一样,名字有点区别,仅此而已。后面增加了两个寄存器,位清除寄存器和端口位翻转寄存器,功能从名字上显而易见。
GD32F407的GPIO寄存器是12个,前面10个寄存器跟STM32F407一模一样,功能也一样。后面增加了两个寄存器,位清除寄存器和端口位翻转寄存器,功能从名字上显而易见。
GPIO的初始化函数,MX_GPIO_Init(),配置基本的时钟、引脚、输出模式、上下拉、输出速度等参数,通过HAL_GPIO_Init()函数完成相关的参数配置。
GD32F4系列的GPIO初始化,需要配置的参数都是一样的,需要两个函数来完成参数的配置,gpio_mode_set()和gpio_output_options_set()
GD32F1系列的GPIO初始化,只需要一个函数gpio_init(),不理解为什么GD32F4又改成两个函数来完成初始化。
STM32的GPIO配置相比来说简单一些,与GD32F1系列大致相同,与GD32F4系列有差异,使用需要注意。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。