【Mac】vscode 配置 GD32E230CXXX 开发环境

总览

1.安装并配置HomeBrew;ARM GCC;make;OpenOCD

2.安装 Vscode 插件:C/C++ (由 Microsoft 提供)、Cortex-Debug (由 marusroomId 提供) 用于烧录和单步调试、

CMake Tools (由 Microsoft 提供) 方便以后管理项目。

3.配置兆易创新官方的 Firmware_Library 开发工具

一、安装并配置HomeBrew;ARM GCC;make;OpenOCD

1.看我的另外一篇博客

https://blog.csdn.net/qq_43768851/article/details/161630134?spm=1001.2014.3001.5502

二、安装vscode插件

1.C/C++ (由 Microsoft 提供)

略。

2.Cortex-Debug (由 marus25 提供)

3.CMake Tools (由 Microsoft 提供)

略。

三、配置兆易创新官方的 Firmware_Library 开发工具

1.直接下载 url

https://www.gd32mcu.com/download/agree/box_id/12/document_id/216/path_type/1

进去之后点 ACCEPT 即可开始下载。

2.下载好,并解压

四、配置工程

1.创建目录

在vscode中创建这样结构的一个目录(我们的项目目录)

这些子目录的名字必须正确,它们里面没有内容,包括 Makefile 文件。

2.获取文件 gd32e230x8_flash.ld

在官方库中搜索文件:gd32e230x8_flash.ld

将这个文件拷贝到 Startup 目录下一份。

3.获取文件 startup_gd32e23x.S(注意,大写S)

在官方库中搜索文件:startup_gd32e23x.S

将这个文件拷贝到 Startup 目录下一份。

4.获取目录 GD32E23x_standard_peripheral、CMSIS

在官方库中搜索:GD32E23x_standard_peripheral 还有 CMSIS

将这两个目录,整个拷贝到 Driver/ 目录下一份。

都拷贝入 Driver 目录下:

五、创建文件

1.在 User 目录下创建 gd32e23x_libopt.h

内容:

cpp 复制代码
#ifndef __GD32E23X_LIBOPT_H
#define __GD32E23X_LIBOPT_H

/* 
 * 这里是 GD32E23x 库的配置选项
 * 如果不需要特殊配置,保持为空即可
 */

#endif /* __GD32E23X_LIBOPT_H */

2.在 User 目录下创建 main.c

内容:

cpp 复制代码
#include "gd32e23x.h"
#include "gd32e23x_rcu.h"
#include "gd32e23x_gpio.h"

// 定义一个简单的延迟宏:数值越大,延迟越久
// 根据之前的验证,200,000 次循环大约是 0.5 秒
#define DELAY_500MS  200000
#define DELAY_1S     400000

void SystemInit(void) {
    // 保持默认时钟
}

int main(void) {
    // 1. 使能 GPIOC 时钟
    rcu_periph_clock_enable(RCU_GPIOC); 
    
    // 2. 配置 PC13 为输出 (适配 E23x 新版 API)
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_13);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);

    while(1) {
        // --- 第一阶段:快速闪烁 3 次 ---
        for(int i = 0; i < 3; i++) {
            // 点亮
            gpio_bit_write(GPIOC, GPIO_PIN_13, RESET); 
            for(volatile int j = 0; j < DELAY_500MS; j++);
            
            // 熄灭
            gpio_bit_write(GPIOC, GPIO_PIN_13, SET);   
            for(volatile int j = 0; j < DELAY_500MS; j++);
        }

        // --- 第二阶段:停顿 1 秒 ---
        // 确保灯是熄灭状态
        gpio_bit_write(GPIOC, GPIO_PIN_13, SET); 
        for(volatile int j = 0; j < DELAY_1S; j++);
    }
}

3.写入 Makefile

写入内容:

bash 复制代码
# --- 项目配置 ---
TARGET = Build/project
CPU = cortex-m23
CC = arm-none-eabi-gcc
OBJCOPY = arm-none-eabi-objcopy
SIZE = arm-none-eabi-size

# --- 路径配置 ---
USER_DIR = User
DRIVER_DIR = Driver/GD32E23x_standard_peripheral
CMSIS_DIR = Driver/CMSIS
STARTUP_DIR = Startup

# --- 包含路径 (Include) ---
C_INCLUDES = \
    -I$(USER_DIR) \
    -I$(DRIVER_DIR)/Include \
    -I$(CMSIS_DIR)/GD/GD32E23x/Include \
    -I$(CMSIS_DIR)

# --- 编译选项 ---
CFLAGS = -mcpu=$(CPU) -mthumb -O0 -g -Wall \
    --specs=nano.specs \
    $(C_INCLUDES) \
    -ffunction-sections -fdata-sections

# --- 链接选项 ---
LDSCRIPT = $(STARTUP_DIR)/gd32e230x8_flash.ld
LDFLAGS = -T$(LDSCRIPT) -mcpu=$(CPU) -mthumb \
    -Wl,--gc-sections --specs=nano.specs -lc -lm

# --- 源代码文件 ---
# 1. 用户代码
SRCS = $(wildcard $(USER_DIR)/*.c)

# 2. 启动文件
SRCS += $(STARTUP_DIR)/startup_gd32e23x.S

# 3. 【关键修正】:只编译真正用到的驱动文件,跳过有 Bug 的 ADC 等其他文件
SRCS += $(DRIVER_DIR)/Source/gd32e23x_rcu.c
SRCS += $(DRIVER_DIR)/Source/gd32e23x_gpio.c

# 4. CMSIS 核心系统文件
# SRCS += $(wildcard $(CMSIS_DIR)/GD/GD32E23x/Source/*.c)

# 编译生成的文件名
OBJS = $(SRCS:.c=.o)
OBJS := $(OBJS:.S=.o)

# --- 编译规则 ---

all: $(TARGET).bin $(TARGET).elf

$(TARGET).elf: $(OBJS)
	$(CC) $(OBJS) $(LDFLAGS) -o $@
	$(SIZE) $@

$(TARGET).bin: $(TARGET).elf
	$(OBJCOPY) -O binary $< $@

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

%.o: %.S
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	rm -rf Build/*

.PHONY: all clean

4.修改官方库

我不知道为什么,官方库里好像有bug。

打开文件:

Driver/GD32E23x_standard_peripheral/Source/gd32e23x_gpio.c

像我这样注释掉 deinit 函数中的一些内容,否则编译报错:

然后正常编译,在终端写入:

bash 复制代码
make

编译成功:

生成了一个 project.bin 文件,在 Build 目录下:

然后想办法烧录进入 GD32 就可以了。

我使用的烧录方法是:PowerWrite 烧录器烧录。

在烧录之前,记得将跳线帽插在 BOOT 和 1 上。

关于这点,官方的解释:

https://wiki.lckfb.com/zh-hans/gd32e230c8t6/

最终结果,给开发板上电后,能够看到蓝灯快速闪烁3次,然后持续亮1秒,再闪烁3次,再持续亮1秒...如此循环。

最终结果,给开发板上电后,能够看到蓝灯快速闪烁3次,然后持续亮1秒,再闪烁3次,再持续亮1秒...如此循环。

最终结果,给开发板上电后,能够看到蓝灯快速闪烁3次,然后持续亮1秒,再闪烁3次,再持续亮1秒...如此循环。

相关推荐
2023自学中2 小时前
imx6ull 开发板 推流ov5640数据,虚拟机用 ffplay 拉流播放
linux·音视频·嵌入式·开发板
不脱发的程序猿3 小时前
AI Coding时上下文不够用咋办?
单片机·嵌入式硬件·嵌入式
bbaydnog5 小时前
嵌入式面试高频题第5弹:DMA原理、看门狗机制、低功耗模式,这3个搞不懂简历直接被筛
面试·dma·嵌入式
m0_535817555 小时前
macOS下Claude Code从0到1配置教程(附API密钥获取+常见报错修复)
gpt·macos·node.js·api·claude·claudecode·88api
CriticalThinking5 小时前
在 JetBrains IDE 中通过 ACP 协议集成 Claude Code等外部工具
ide·agent·ai编程
一个人旅程~8 小时前
Windows的6月份安全启动证书过期如何查看是否过期是否需要更新如何操作
windows·经验分享·macos·电脑
Gh0stX8 小时前
macOS Burp Suite Professional 激活指南
macos
会Tk矩阵群控的小木8 小时前
imessage虚拟机群发系统搭建:基于UTM+Frida的完整实现与海外社媒集成
macos·ios·objective-c·cocoa·开源软件·个人开发·tk矩阵
叶修_A8 小时前
【CP-11】复杂驱动设计 - AUTOSAR CP驱动架构与实现
架构·嵌入式·autosar·cp·驱动设计