一 GD32 MCU 开发环境搭建

GD32 系列为通用型 MCU ,所以开发环境也可以使用通用型的 IDE ,目前使用较多的是 KEIL、 IAR
GCC Embedded Builder ,客户可以根据个人喜好来选择相应的开发环境。

目录

1、使用 Keil 开发 GD32


目前市面通用的MDK for ARM版本有Keil 4Keil 5:使用Keil 4建议安装4.74及以上;使用Keil 5建议安装5.25以上版本(注意:GD32E23x系列和GD32W515x系列必须使用Keil5开发)。

1.1 在Keil4中添加GD32 MCU Device

1.1.1 从GD32官网下载相关系列插件。 下面以GD32F30x为例,在官网上下载MDK-ARM_AddOn_GD32F30x_V1.0.0.rar,如图所示

1.1.2 双击解压安装至Keil 4的目录,一般都会默认选择,如若同时安装了Keil 4和Keil 5才需要手动选择。

1.1.3 安装成功后,重新打开Keil 4,则可以在File->Device Database中出现Gigadevice的下拉选项,点击可以查看到相应的型号。

1.1.4 为了后续debug工作的顺利进行,建议检查一下安装路径下是否有下载算法,可以通过如下方式查看:打开一个工程,将型号选为GD32F30x的型号,然后Options for Target -> Debug ->Settings -> Flash Download-> Add,如果下拉选项中有GD32F30x的下载算法则完全安装成功。

1.2 在Keil 5中添加GD32 MCU Device

1.2.1 从GD32官网下载相关系列插件。 下面以GD32F30x为例,在官网上下载MDK-ARM_AddOn_GD32F30x_V1.0.0.rar。

1.2.2 解压并安装至Keil 5的目录,一般都会默认选择。

1.2.3 安装完后重新打开keil5工程,即可在Device->Database中出现Gigadevice的型号。

1.2.4 在Options for Target -> Debug ->Settings ->Flash Download 中添加flash算法,会出现GD32F30X的算法,即说明安装成功。根据相应的芯片选择合适的算法,即可下载仿真。

1.2.5 用Keil 5打开Keil 4工程,如果报找不到器件信息等错误,将Keil 4的插件安装在Keil 5的目录下,具体操作方式参考Keil 4插件相关内容。

1.3 使用GD-Link开发GD32

GD32部分开发板自带GD-link,可以用电路板上的GD-link调试仿真代码,不带的可外接GD-link模块,具体操作方法如下。

1.3.1 第一次使用GD-link插入电脑后,会自动安装驱动。 在Options for Target -> Debug 中选择“CMSIS-DAP Debugger”,部分客户反馈找不到这一驱动器选项,那是因为MDK版本过低,只有Keil4.74以上的版本和Keil5才支持CMSIS-DAP Debugger选项。

1.3.2 在Options for Target -> Utilities,也要选择“CMSIS-DAP Debugger”。

1.3.3 在Options for Target -> Debug ->Settings勾选SWJ、Port选择 SW。右框IDcode会出现”0xXBAXXXXX”。

1.3.4 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32的flash算法。

1.3.5 单击下图的快捷方式“debug”,即可使用GD-Link进行仿真。

1.4 使用J-Link开发GD32

使用J-Link来debug GD MCU,具体配置如下:

1.4.1 在Options for Target -> Debug中选择“J-LINK/J-Trace Cortex“

1.4.2 在Options for Target -> Debug ->Utilities,也要选择“J-LINK/J-Trace Cortex”。

1.4.3 在Options for Target -> Debug ->Settings勾选SWJ,Port选择 SW。右框IDcode会出现“0xXBAXXXXX”。 

1.4.4 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32的flash算法。

1.4.5 单击下图的快捷方式“debug”,即可使用J-Link进行仿真。

1.5 使用ULink2开发GD32

使用ULink2来debug GD MCU,具体配置如下:

1.5.1 在Options for Target -> Debug中选择“ULINK2/ME Cortex Debugger”

1.5.2 在Options for Target -> Debug ->Settings勾选SWJ,Port选择 SW。右框IDcode会出现“0xXBAXXXXX”。

1.5.3 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32的flash算法。

1.5.4 单击下图的快捷方式“debug”,即可使用ULink2进行仿真。

1.6 MDK使用常见问题解答

1.6.1 Keil4打开Keil5工程

如果没有安装Keil 5,也是能够使用Keil 4来编译Keil 5的工程,具体做法就是修改工程的后缀名,将Keil5工程的后缀名xxxx.uvprojx修改为xxxx.uvproj,即可使用Keil 4来查看编译了。

1.6.2 Keil5打开Keil4工程

如果使用Keil 5打开Keil 4工程,打开时会遇到找不到MCU器件的情况,这种可以直接将Keil4工程的后缀名xxxx.uvproj修改为xxxx.uvprojx,即可正常使用Keil 5来查看编译了。

1.6.3 Keil5打开Keil4工程,编译报错

错误原因是core_cmInstr.h文件的路径在Keil5和Keil4中不同,可在Option for Target的C/C++中添加core_cmInstr.h的文件路径,如图文件路径添加示意图所示:

2. 使用 IAR 开发 GD32

IAR版本众多,版本之间的兼容性并不好,如果初次使用建议安装7.3以上的版本,安装好IAR以后再根据该文档来添加GD的器件型号,进行相关的debug工作。

2.1 在IAR中添加GD32 MCU Device

2.1.1 从官网上下载相应的GD32系列插件。

下面以GD32F30x系列为例,下载插件IAR_GD32F30x_ADDON.1.0.0.exe:

2.1.2 运行IAR_GD32F30x_ADDON.1.0.0.exe,单击start开始安装插件。

2.1.3 安装成功后单击Finish,结束插件安装。

2.2 在IAR中编译调试GD32

在上一小节中我们已经添加了GD32F30x系列的插件,这一小节我们介绍应如何使用它。 使用 IAR 编译 GD 的型号,有两个办法,一种是使用现有的工程进行修改,还有就是重新建立工程,这里就不细说具体工程应该如何建立,GD 的工程建立和别的平台都一致,建立工程时选择GD的相应型号。

6.1以后的IAR不需要添加CMSIS文件(core_cm4.c和core_cm4.h),但是需要勾选General Options->Library Configuration的Use CMSIS,如果软件代码有使用到printf函数,还需要修改Library为FULL。

芯片的Link文件建立工程时会默认根据型号选定,但是编译前还是要有检查的习惯,检查一下ICF文件是否有配置,是否正确。

配置Debugger->Setup选项,新建立的工程默认是Simulator模拟,如果需要调试那么需要根据实际情况来选择:

1.使用GD-Link选择CMSIS DAP(兼容性不好,不建议在IAR下使用);

2.使用J-Link选择J-Link/J-Trace;

3.使用ULink2选择CMSIS DAP。

配置Debugger->Download选项,新建的工程有可能没有配置download选项,如果我们需要调试代码那么务必要勾选User flash loader选项,且保证board file准确,否则程序无法正常下载至芯片内部。

如果选择了Debugger选项,那么还需要根据Debugger选项设定对应的调试选项;如果选择的是GD的型号,在IAR下面已经固定将所有的调试接口都配置为SWD接口,可以忽略该选项配置,直接进行相关的代码debug工作。

3. 使用 Embedded Builder 开发 GD32

3.1 安装 JAVA 环境

Embedded Builder 是一款基于 Eclipse 和 Java 平台的软件,需要安装 java 环境,在 Oracle 官 网下载 Java Downloads | Oracle, 以 jdk-8u152-windows-x64.exe 为例,下载后管理员身份打开并安装,记住安装路径,如“D:\Program Files\Java\jdk1.8.0_351”。

编辑系统变量,将 Java 环境添加到系统环境中。首先在系统变量中添加JAVA_HOME 这个变量。

编辑系统变量中的 Path 变量,单击新建,添加如下两个变量。

在系统变量中新建 CLASSPATH 变量

至此,Java环境便配置完了。Windows+R 键,输入cmd并点击确认,打开 dos 窗口。分别输入java和javac,如果能正常输出java提示信息则说明配置成功。

3.2 创建一个新的工程

双击压缩包下面的 Embedded Builder.exe 打开 IDE,选择一个路径作为 workspace 的存放位置,确认之后即可进入 IDE 页面。在导航栏依次单击“File->New->Project…”开始新建项目。在 New Project 页面 C/C++ 选项卡下选择 C Project,并单击 Next >。

C 工程选项页面中,在可执行文件“Executable”选项卡下选择“GigaDevice ARM C Project”,填好项目名字之后选择下一步,在下一步中选择对应的芯片,剩余的配置模块即可。

3.3 导入工程

在导航栏处依次选择“File->Import”,开始导入工程。在导入页面的 General 选项卡下选择Existing Projects into Workspace,开始导入现有工程。

在弹出的页面中选择原有工程的路径,IDE 会自动检索该路径下的工程配置文件并列出存在的 Embedded Builder 项目。勾选需要导入的项目后单击 Finish 即可完成工程的导入。

3.4 在 Embedded Builder IDE 中编译调试 GD32

右键工程打开工程选项,选择“Build Project”开始编译工程,编译的 Log 信息会在下方的 console窗口打印,编译效果如下图所示。

单击导航栏上的 debug configuration,可以进入 Debug 配置页面。

单击 Debugger 选项卡,可以选择需要的调试器,默认为 GD-Link,这里切换为 J-Link。单击Debug 按钮进入 Debug 页面。

Debug页面如下,左侧为文件导航栏,中间为文件编辑器,右侧包含寄存器、内存、断点及其他调试信息,下方是终端提示信息,Debug信息及其他提示信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试真题2024版-路口最短时间问题

题目描述 假定街道是棋盘型的,每格距离相等,车辆通过每格街道需要时间均为 timePerRoad; 街道的街口(交叉点)有交通灯,灯的周期 T(lights[row][col]) 各不相同; 车辆可直行、左转和右转&…

企业网三层架构

企业网三层架构:是一种层次化模型设计,旨在将复杂的网络设计分成三个层次,每个层次都着重于某些特定的功能,以提高效率和稳定性。 企业网三层架构层次: 接入层:使终端设备接入到网络中来,提供…

Python爬虫教程第二篇:进阶技巧与实战案例

Python爬虫教程第二篇:进阶技巧与实战案例 在上一篇教程中,我们学习了Python爬虫的基础概念、基本流程以及一个简单的入门实践案例。本篇教程将带领大家进一步探索Python爬虫的进阶技巧,并提供一个实战案例,帮助大家提升爬虫技能…

Android12 MultiMedia框架之GenericSource extractor

前面两节学习到了各种Source的创建和extractor service的启动,本节将以本地播放为例记录下GenericSource是如何创建一个extractor的。extractor是在PrepareAsync()方法中被创建出来的,为了不过多赘述,我们直接从GenericSource的onPrepareAsyn…

Mojolicious命令行工具:自动化Web开发的瑞士军刀

Mojolicious是一个高性能的、基于Perl的Web开发框架,它提供了一整套工具来简化Web开发流程。其中,Mojolicious的命令行工具集是其强大功能的一部分,允许开发者快速生成项目模板、运行开发服务器、执行各种开发任务等。本文将详细介绍Mojolici…

qt 自定义信号号槽 简单举例

在Qt中,自定义信号和槽是一种非常灵活的方式来处理对象之间的通信。以下是一个简单的例子,展示了如何定义和使用自定义的信号和槽。 首先,我们定义一个名为MyClass的类,该类继承自QObject,并声明一个自定义信号和一个…

13_Shell系统函数

13_Shell系统函数和自定义函数 一、系统函数 basename 获取文件名 #!/bin/bash#basename 相对路径文件名 basename ./1.sh#basename 绝对路径文件名 basename /tmp/1.sh#basename 去除文件后缀名 basename /tmp/1.sh .shdirname 获取文件所在目录名 #!/bin/bash#dirname 相对路…

Redis持久化RDB,AOF

目 录 CONFIG动态修改配置 慢查询 持久化 在上一篇主要对redis的了解入门,安装,以及基础配置,多实例的实现:redis的安装看我上一篇: Redis安装部署与使用,多实例 redis是挡在MySQL前面的,运行在内存…

Week 6-杨帆-学习总结

- 46 语义分割和数据集 语义分割概念 语义分割是一种计算机视觉任务,其目标是将图像分割成属于不同语义类别的区域。与目标检测不同,语义分割关注的是像素级别的标注和预测,能够识别并理解图像中每一个像素的内容。这使得语义分割在理解图像…

产品经理-研发流程-敏捷开发-迭代-需求评审及产品规划(15)

敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。 通俗来说,敏捷开发是一个软件开发流程,是一个采用了迭代方法的开发流程 简单来说,迭代就是把一个大产品拆分出一些最小的实现单位。完成不同的迭代就最…

机器学习筑基篇,Jupyter Notebook 精简指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 Jupyter Notebook 简明指南 描述:前面我们已经在机器学习工作站(Ubuntu 24.04 Desktop Geforce RTX 4070Ti SUPER)中安装 Anaconda 工具包,其…

老物件线上3D回忆展拓宽了艺术作品的展示空间和时间-深圳华锐视点

在数字技术的浪潮下,3D线上画展为艺术家们开启了一个全新的展示与销售平台。这一创新形式不仅拓宽了艺术作品的展示空间,还为广大观众带来了前所未有的观赏体验。 3D线上画展制作以其独特的互动性,让艺术不再是单一的视觉享受。在这里&#x…

数据处理-Matplotlib 绘图展示

文章目录 1. Matplotlib 简介2. 安装3. Matplotlib Pyplot4. 绘制图表1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图 5. 中文显示 1. Matplotlib 简介 Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 Ma…

如何定义版本号--语义化版本

前言 版本号(version number)是版本的标识号。每一个操作系统(或广义的讲,每一个软件)都有一个版本号。版本号能使用户了解所使用的操作系统是否为最新的版本以及它所提供的功能与设施。 例如在Python项目依赖中会看到 requires-python &q…

zdppy+onlyoffice实现重命名文件的功能

参考文档:https://api.onlyoffice.com/zh/editors/rename 步骤图: 实现步骤: 用户在 文档编辑器中为文档指定一个新名称。 文档编辑器 将文档的新名称通知给 文档管理器。 文档管理器 将文档的新名称发送到 文档存储服务,在这里…

使用jsencrypt在web前端对字符串进行Ras加密

话不多说&#xff0c;上代码 实例代码 下面方法&#xff0c;在网页中先引入jsencrypt.min.js。然后调用ToEncrypt方法示例输出加密&#xff0c;解密后的结果。 <script src"/js/jsencrypt.min.js"></script> //加密测试function ToEncrypt(){// 假设…

synchronized关键字详解

文章目录 synchronized使用示例实现原理锁的升级synchronized与可见性synchronized与原子性synchronized与有序性 synchronized synchronized是Java提供的关键字译为同步&#xff0c;是Java中用于实现线程同步的一种机制。它可以确保在同一时间只有一个线程能够执行某段代码&a…

【Python系列】数字的bool值

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

泌尿系统疾病病人的护理

一、泌尿系统疾病病人的一般护理要点 对于泌尿系统疾病的病人&#xff0c;护理是至关重要的。首先&#xff0c;要密切观察病人的生命体征&#xff0c;包括体温、脉搏、呼吸和血压。 饮食方面&#xff0c;应根据病人的具体病情进行调整。例如&#xff0c;对于有水肿的病人&#…

js登陆验证

当开始制作网页时&#xff0c;就需要做一个判断&#xff0c;不管在第几页进入&#xff0c;都要加一个登陆验证&#xff0c;只有用户有账号&#xff0c;才能进入网页&#xff0c;浏览网页信息。下面就来看一下&#xff0c;使用JavaScript几行代码实现登陆验证。 首先 登录页是i…