当前位置:   article > 正文

GD32F407入坑指南 第三章

GD32F407入坑指南 第三章

前言

GD32系列文章均采用KEIL5(V5.35版本),芯片包及固件库版本V3.2.0,使用GD32F407VGT6芯片。

相关文档下载地址,后续更新内容也会放在这个文件路径中。

链接:https://pan.baidu.com/s/1qJEMaxVjLQHTjE1yh4df6Q 
提取码:amvj

本章将GD32F407和STM32F407的GPIO进行对比。

1.GPIO外设地址

1.1 STM32的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页

 1.2 GD32的GPIO基地址

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

 1.3 对比结果

对比STM32F407和GD32F407,GPIO外设的基地址完全一样,其实芯片也是P2P兼容,STM32F407最高频率为168MHZ,GD32F407最高频率为200MHZ。

2.GPIO的寄存器对比

2.1 STM32的GPIO寄存器

STM32F407的GPIO共有10个寄存器

 在STM32中GPIO的寄存器是以结构体的方式进行访问,其他外设都是如此。

 2.2 GD32的GPIO寄存器

GD32F407的GPIO寄存器是12个,前面10个寄存器跟STM32F407一模一样,功能也一样,名字有点区别,仅此而已。后面增加了两个寄存器,位清除寄存器和端口位翻转寄存器,功能从名字上显而易见。

2.3 对比结果 

GD32F407的GPIO寄存器是12个,前面10个寄存器跟STM32F407一模一样,功能也一样。后面增加了两个寄存器,位清除寄存器和端口位翻转寄存器,功能从名字上显而易见。

3.GPIO配置

3.1 STM32的GPIO配置

GPIO的初始化函数,MX_GPIO_Init(),配置基本的时钟、引脚、输出模式、上下拉、输出速度等参数,通过HAL_GPIO_Init()函数完成相关的参数配置。

3.2 GD32的GPIO配置

GD32F4系列的GPIO初始化,需要配置的参数都是一样的,需要两个函数来完成参数的配置,gpio_mode_set()和gpio_output_options_set()

 GD32F1系列的GPIO初始化,只需要一个函数gpio_init(),不理解为什么GD32F4又改成两个函数来完成初始化。

3.3 对比结果

STM32的GPIO配置相比来说简单一些,与GD32F1系列大致相同,与GD32F4系列有差异,使用需要注意。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/655890
推荐阅读
相关标签
  

闽ICP备14008679号