一、使用VSCode开发GD32的原因

1-单片机开发用的最多的IDE为Keil,而Keil为商用软件,并非开源,而且只支持windows环境,介于当前关系,有断供的风险在。

2-其他IDE类似第1条。

3-VSCode为开源的编辑器,不存在授权一说,界面比较简约和优雅。可扩展性强。

二、VSCode开发环境搭建

下面用GD32F303介绍下环境的搭建。

1-下载VSCode: 参考网址https://code.visualstudio.com/docs/setup/setup-overview

2-下载编译工具arm-none-eabi-gcc: 点击https://developer.arm.com/downloads/-/gnu-rm

3-安装工具pyocd: pip3 install pyocd: 安装完毕后检查pyocd版本:pyocd --version,如果遇到PyYAML问题可pip install --ignore-installed PyYAML

4-安装VSCode扩展Cortex-Debug: 打开VSCode并搜索Cortex-Debug

5-安装c、c++支持: 打开VSCode并搜索c/c++

5-下载实例程序: 打开兆易官网https://www.gd32mcu.com,点击资料下载-开发板资料,点击左边GD32F3 MCU,选择GD32F30x Demo Suites

6-打开实例程序: 解压下载好的GD32F30x Demo Suites。点击GD32303B_START_Demo_Suites,找到 Projects文件夹里的示例01_GPIO_Running_LED。将整个文件夹拖入VSCode.

7-导入GD3230系列库函数: 点击GD32303B_START_Demo_Suites, 把GD32F30x_Firmware_Library里的CMSIS和GD32F30x_standard_peripheral拖入VSCode

三、生产Makefile文件

在Linux环境或mac环境下,使用GNU make来构建和管理自己的工程。整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行

1-在本案例里,使用python脚本toMakefile.py来产生makefile文件

toMakefile.py脚本如下:

import os
def main():
cFileList = []
hPathList = []
sFileList = []
ldFileList = []
for root,dirs,files in os.walk("./"):
for file in files:
if file.endswith(".c"):
cFile = os.path.join(root,file)#.decode('gbk').encode('utf-8')
cFileList.append(cFile)
if file.endswith(".h"):
hPath = os.path.join(root)#.decode('gbk').encode('utf-8')
if hPathList.count(hPath) == 0:
hPathList.append(hPath)
if file.endswith(".s"):
sFile = os.path.join(root,file)#.decode('gbk').encode('utf-8')
sFileList.append(sFile)
if file.endswith(".ld"):
ldFile = os.path.join(root,file)#.decode('gbk').encode('utf-8')
ldFileList.append(ldFile)
print(cFileList)
print(hPathList)
print(sFileList)
print(ldFileList)
cFileStr = ""
hPathStr = ""
sFileStr = ""
ldFileStr = ""
for listStr in cFileList:
# cFileStr += " \\\n" + listStr
cFileStr += "C_SOURCES += " + listStr + "\n"
for listStr in hPathList:
# hPathStr += " \\\n-I" + listStr
hPathStr += "C_INCLUDES += -I" + listStr + "\n"
for listStr in sFileList:
# sFileStr += " \\\n" + listStr
sFileStr += "ASM_SOURCES += " + listStr + "\n"
for listStr in ldFileList:
# ldFileStr += " \\\n" + listStr
ldFileStr += "LDSCRIPT += " + listStr + "\n"
try:
f = open("./Makefile.template", "r")
fileStr = f.read()
f.close()
fileStr = fileStr.replace("@@C_SOURCES@@", cFileStr)
fileStr = fileStr.replace("@@C_INCLUDES@@", hPathStr)
fileStr = fileStr.replace("@@ASM_SOURCES@@", sFileStr)
fileStr = fileStr.replace("@@LDSCRIPT@@", ldFileStr)
f = open("./Makefile", "w")
f.write(fileStr)#.decode('gbk').encode('utf-8'))
f.close()
finally:
f.close()
if __name__ == '__main__':
main()

2-代码编译

在项目终端下输入make,再回车,之后会看到项目目录出现build文件夹,即编译完成

四、代码调试

使用USB线连接上开发板,点击VSCode上的运行和调试,再点击开始调试, 即可进入调试状态

五、参考文献

1-极术社区 LJL 《【GD32F310开发板试用】MAC开发&调试环境搭建》

2-简书 _空格键_  《使用VS Code开发单片机程序》

1-VSCode搭建GD32开发环境的更多相关文章

  1. 2019-04-03 Anaconda+VSCode搭建python开发环境,并连接GIthub

    1.最好的Python开发环境 :Anaconda+VSCode搭建python开发环境,conda提供了python开发环境和大量的你不用安装的库 conda的环境变量: 直接在conda 中下载启 ...

  2. Mac环境下使用VSCode搭建Go开发环境

    换新工作啦!!!开心一下.到了新公司一看,乖乖,全MAC办公,让我这只用过windows的土包子怎么活,而且公司的人都好高冷,于是自己摸索着搭建go语言开发环境了. go语言的ide挺多的,JetBr ...

  3. VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...

  4. 使用VSCode搭建TypeScript开发环境 (重点)

    下载TypeScript 在CMD(Windows系统)或者终端(macOS系统)中输入一下命令: npm install -g typescript 下载VSCode VSCode是我使用过最棒的编 ...

  5. [转]VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...

  6. vsCode 搭建Java开发环境

    1.安装扩展 Java Extension Pack Spring Boot Extension Pack 2.配置Maven 打开设置 搜索maven 找到并打开  在 settings.json ...

  7. windows下vscode 搭建python开发环境

    1.vscode https://code.visualstudio.com/ 下载 2.python下载 https://www.python.org/downloads/windows/  exe ...

  8. VsCode搭建Java开发环境

    1:在 Visual Studio Code 中打开扩展视图(Ctrl+Shift+X),输入关键词java.spring分别下载Java开发插件包和springboot插件包 2:配置参数 点击设置 ...

  9. vscode搭建springboot开发环境

    1. JDK,Maven 1.1 下载略 1.2 设置系统环境变量 jdk增加环境变量JAVA_HOME=C:\Program Files\Java\jdk1.8.0_191(安装路径) 增加路径Pa ...

随机推荐

  1. C++对象的应用

    本篇文章将介绍对象数组,对象的动态分配以及对象在函数中的应用. 一.对象数组 1.对象数组的定义和初始化 定义对象数组与定义普通数组的语法形式基本相同.如定义一个Square obj[3]:表示一个正 ...

  2. Solution -「BZOJ3894」文理分科

    Sol. 说实话,对于一个初学者,这道题很难看出是一道网络流-最小割.对于一个熟练者,这是比较套路的一种模型. 最小割,可以看做是在一个图中删掉最小的边权和使得源点.汇点不连通.或者换一个角度,可以看 ...

  3. impl和dyn用法

    先推荐一个链接 理解 Rust 2018 edition 的两个新关键字 -- impl 和 dyn 官方文档中,impl是限定泛型的语法糖,所以 trait Trait {} fn foo<T ...

  4. Nginx 集群部署(Keepalived)

    # Nginx集群部署 # 当我们的用户同时访问量达到一定量的时候,一台服务器是不够用的 # 这个时候我们需要解决这个问题肯定是要添加新的服务器去处理用户访问 # 多台服务器处理用户访问就需要我们集群 ...

  5. 面试突击74:properties和yml有什么区别?

    properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款"产品".在 Spring Boot 时 ...

  6. 一文带你弄懂 JVM 三色标记算法!

    大家好,我是树哥. 最近和一个朋友聊天,他问了我 JVM 的三色标记算法.我脑袋一愣发现竟然完全不知道!于是我带着疑问去网上看了几天的资料,终于搞清楚啥事三色标记算法,它是用来干嘛的,以及它和 CMS ...

  7. JavaScript 异步编程(二):Promise

    PromiseState Promise 有一个 [[PromiseState]] 属性,表示当前的状态,状态有 pending 和 fulfill 以及 reject. 从第一个 Promise 开 ...

  8. Unity 将是驱动 C# 增长的引擎吗 ?

    C# 在中国的采用需要一个杀手级应用的带动, 那么这样的一个杀手级应用是 Unity吗,我这里大胆推测采用CoreCLR 的新一代完全采用C#构建的Unity 将是这样的一个杀手级应用.Unity已被 ...

  9. GIL互斥锁与线程

    GIL互斥锁与线程 GIL互斥锁验证是否存在 """ 昨天我们买票的程序发现很多个线程可能会取到同一个值进行剪除,证明了数据是并发的,但是我们为了证明在Cpython中证 ...

  10. [CF1538G] Gift Set (数学简单题)

    题面 相信英文题面也很好理解 有 x \tt x x 个红糖, y \tt y y 个蓝糖.每一个礼包里面要么有 a \tt a a 个红糖+ b \tt b b 个蓝糖,要么是 a \tt a a ...