一 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,一经查实,立即删除!

相关文章

企业网三层架构

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

Android12 MultiMedia框架之GenericSource extractor

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

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前面的,运行在内存…

产品经理-研发流程-敏捷开发-迭代-需求评审及产品规划(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…

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

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

synchronized关键字详解

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

【Python系列】数字的bool值

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

MVC之 IHttpModule管道模型《二》

》》》注意:在http请求的处理过程中,只能调用一个HttpHandler,但可以调用多个HttpModule。 HTTP Modules ASP.NET请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,当请求到达HttpMod…

UART编程

Q:为什么使用串口前要先在电脑上安装CH340驱动? 中断的作用? 环形buffer的作用? static和valitate的作用 三种编程方式简介 也可以通过DMA方式减小CPU资源的消耗 直接把数据在SRAM内存和UART模块进行传输 ,流程: …

玩家自行定制内存将古老的386 PC内存升级到64MB容量

比尔盖茨曾说:“无论对谁来说,640K内存都足够了。” 如果你是一个还停留在 30 针 SIMM 时代的老式电脑爱好者,那么你的内存升级选择是相当有限的。不过,YouTube 上的一个频道已经展示了如何将古老的 386 系统内存升级到令人"…

Linux内核编译安装 - Deepin,Debian系

为什么要自己编译内核 优点 定制化:你可以根据自己的硬件和需求配置内核,去掉不必要的模块,优化性能。性能优化:移除不需要的驱动程序和特性,减小内核体积,提高系统性能。最新特性和修复:获取…

【Leetcode】最小数字游戏

你有一个下标从 0 开始、长度为 偶数 的整数数组 nums ,同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏,游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下: 每一轮,Alice 先从 nums 中移除一个 最小 元素&…

【Linux】System V消息队列 System V信号量

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

Spark调度底层执行原理详解(第35天)

系列文章目录 一、Spark应用程序启动与资源申请 二、DAG(有向无环图)的构建与划分 三、Task的生成与调度 四、Task的执行与结果返回 五、监控与容错 六、优化策略 文章目录 系列文章目录前言一、Spark应用程序启动与资源申请1. SparkContext的创建2. 资…

Python | Leetcode Python题解之第233题数字1的个数

题目: 题解: class Solution:def countDigitOne(self, n: int) -> int:# mulk 表示 10^k# 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)# 但为了让代码看起来更加直观,这里保留了 kk,…

Excel第31享:基于left函数的截取式数据裂变

1、需求描述 如下图所示,在“Excel第30享”中统计2022年YTD各个人员的“上班工时(a2)”,需要基于工时明细表里的“日期”字段建立辅助列,生成“年份”字段,本文说明“年份”字段是怎么裂变而来的。 下图为…