[MCU] 兆易GD32H759I-EVAL [环境搭建] + Blink LED 及其GD32H7XX_gpio.h 代码分析

御坂10032号   2024-5-21 16:29 楼主

题外话

在开篇之前,首先要感谢电子工程世界提供这次来之不易的测评机会。

经过了半个月的快递也是终于拿到了这块开发板。接下来我们进入正题。今天这次的测评内容包括以下几个方面:

  1. 开箱
  2. 环境搭建
  3. 官方LED闪烁Demo烧录
  4. 代码运行分析
  5. 反馈和建议

 

开箱 

 

正面照:

包装是一个带有磁吸的盒子,里面防止了两个缓冲泡沫来防止板子在盒子内产生碰撞

DSC09558.JPG

开发板正面照:

开发板上面使用插座额外增加了一个4.3寸的LCD屏幕和一个OV2640摄像头

DSC09559.JPG

 

拆除掉的LCD屏幕:

DSC09560.JPG  

 

拆除掉的OV2640

DSC09561.JPG  

 

拆下来后的底板:

可以从图中看到,这块H759I-EVAL的板载资源非常丰富。可以非常方便的进行基于这块芯片的资源学习或者是功能验证

DSC09562.JPG  

环境搭建

 

GD32官网提供了非常详细的文档以及开发者工具。如果你初次使用GD32也可以非常迅速的搭建好你本地的开发环境(本开发环境搭建假设你已经安装的Keil-ARM)

 

1- 访问GD32官网,在资料下载处搜索GD32H7

 

GD官网截图.png  

 

2 - 你可以在上述页面下载如下内容

同时需要下载Keil的支持包,并且安装。

我本地下载的文件如下图所示:

     image.png  

 

3 - 此时环境搭建已经完成。 此时使用keil新建project的时候可以看到已经多了对Giga device的H7系列芯片的支持

 

image.png  

 

官方LED闪烁Demo烧录

 

打开 GD32H7xx_Demo_Suites_V1.2.0\GD32H759I_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED\MDK-ARM 文件夹,并且打开GD32H759I_EVAL.uvprojx

 

1- 点击Build 构建当前的Project

2- 点击Option for targetDebug 选项中修改debug deviceCMSIS-DAP Debugger

3- 点击Download 按钮将程序烧录到单片机

 

此时你会注意到,当前的开发板LED灯并没有闪烁。这原因是因为这两个板载的LED默认被跳线帽连接到了USB和LCD屏。

此时需要将JP66跳线帽接在右边的LED功能上, 然后将JP50也接到右边的LED功能上。 如下图所示

 

image.png 此时LED开始闪烁,官方DEMO烧录测试完毕。

 

 

代码运行分析

接下来来看一下刚才烧录的demo是怎么工作的。

image.png

 

其实上述代码很简单,首先配置CPU缓存,然后配置系统滴答定时器。初始化外设时钟和开启LED闪烁。

根据GD32H7的结构图得知,所有的GPIO外设都被挂载到了AH4总线上 

rcu_periph_clock_enable() 这个函数可以对外设的时钟进行初始化。而对于GPIO,分别支持 RCU_GPIOx (x = A,B,C,D,E,F,G,H,J,K): GPIO ports clock

之后在代码第72行也并不像STM32 一样的定义结构体初始化GPIO,而是可以直接根据GPIOX的名称来初始化对应GPIO的模式。

可以分别配置为如下图所示(输入,输出,重用,Analog to digital)

image.png  

对于pull_up_down 可以配置为,上拉下拉以及悬空。 在这一点上GD32的库函数相对于STM32标准库在实现相同的功能上提供了更加简化的方式。

image.png  

之后再配置GPIO的输出模式,分别可以配置为推挽输出以及开漏输出。GPIO的速度最快也是达到了100/220MHz。

image.png  

对于库函数而言,这里有几个比较有意思的Functions,第一个是输入滤波的配置。可以在复杂环境下使用对应的滤波器对输入的数据进行降噪滤波。

第二个则是PIN lock的功能。可以锁定某个GPIO的某个PIN的功能。在锁定后,当前的GPIO状态不会再被改变。

最后一个则是这个 gpio_port_toggle了,这个function相对上一个 gpio_bit_toggle的区别是这个function会切换整个GPIO PIN的bit value. 对整体进行取反。

对于GPIO库函数的评价是: 可读性非常高,即便是新手没有接触过GD32 也可以非常快速的上手。

 

 

反馈和建议

对于这块开发板我有两点想要反馈的:

1- MCU 核心处预留的排针孔不是很友好,这种排针孔不是很通用

2- 这个Jtag的接口不应该是排针的形式。当用户使用Jtag的时候不是很好连接。

本帖最后由 御坂10032号 于 2024-5-21 20:51 编辑

回复评论 (3)

楼主提出中肯的反馈与建议,这板子的跳线确实非常,我当时点个灯也找了好久才搞定。图片有些还是不是很清楚,有空可以更新一下。
点赞  2024-6-1 11:31
引用: lugl4313820 发表于 2024-6-1 11:31 楼主提出中肯的反馈与建议,这板子的跳线确实非常,我当时点个灯也找了好久才搞定。图片有些还是不是很清楚 ...

这个图片好像你点击他一下就变成高清的了

点赞  2024-6-1 13:49
引用: 御坂10032号 发表于 2024-6-1 13:49 这个图片好像你点击他一下就变成高清的了

我这个图片用单反拍的,保证清楚,就是加载时间可能比较长。 帖子内显示的是处理过的低清的

点赞  2024-6-1 13:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复