当前位置: 首页 > news >正文

GD32F407开发环境搭建

1.前言

笔者近期做一个嵌入式项目,要使用国产芯片,根据需求,选用了GD32F407VG芯片。STM32系列开发板,有正点原子,野火等配置了详细的例程。遗憾的是,只有野火仅支持了一款GD32H759芯片(M7内核),并没有GD32F407芯片。
继续查找相关厂家,有一些小厂家有做GD系列的开发板,并配备了相应的例程,但大多数都是基于标准库,hal库并不完备(甚至GD32的厂家兆易创新本身也只有F3xx系列以下提供了hal库例程,F4xx都是一些标准库)。因此最终选用标准库进行开发(弃用STM32CubeMX生成底层驱动代码的想法,因其只生成Hal库代码)。

2. 开发环境搭建

2.1 安装keil

选用keil作为IDE,此步教程较多,本文略过

2.2 安装GD32F07固件库

官网下载 固件库
下载链接:https://www.gd32mcu.com/cn/download?kw=GD32F4xx&lan=cn
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
安装GigaDevice.GD32F4xx_DFP.pack固件库后,keil才能识别GD的芯片。
在这里插入图片描述

3.工程文件创建

3.1 如创建工程文件夹为LS_20250407,在其目录下创建四个二级目录:

Doc:存放说明文档
Libraries:存放库文件
Project:存放工程文件(uvprojx)
User:存放用户自定义的头文件和源文件
Output:存放编译过程,产生的文件
在这里插入图片描述

3.2 文件复制

将固件库文件夹下面的Firmware下面的三个文件复制到新创建的工程目录Libraries下面
在这里插入图片描述
在这里插入图片描述
将固件库文件夹下面的Template下面的Keil5_project文件复制到新创建的工程目录Project下面
在这里插入图片描述
把固件库文件夹下面的Template下面的gd32f4xx_it.c等文件复制到User文件夹下面
在这里插入图片描述

3.3 keil创建工程

起一个工程名,保存:
在这里插入图片描述
选择芯片型号,这里选用GD32F407VG(后续可更改),点击OK
在这里插入图片描述
出现下面页面,点击ok即可。
在这里插入图片描述

3.4 创建工程视图

创建好的工程文件如下图所示,后面要把需要添加进入工程项目的文件添加进来。
在这里插入图片描述

Target1上点击右键,选择manage project items
在这里插入图片描述
新建STARTUP逻辑目录,并把Libraries/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f407_427.s 文件add Files.
在这里插入图片描述
在这里插入图片描述

新建CMSIS逻辑目录,并把Libraries/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c 文件add Files.
在这里插入图片描述
在这里插入图片描述

新建Peripherals逻辑目录,并把Libraries\GD32F4xx_standard_peripheral\Source 下所有文件add Files.
在这里插入图片描述
在这里插入图片描述

新建USER逻辑目录,并把main.c、gd32f4xx_it.c、systick.c添加进去。
在这里插入图片描述

此时,编译会报错,提示头文件找不到:
在这里插入图片描述

添加头文件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此,工程文件创建工程。编译没有问题。可以开始后续开发了。
在这里插入图片描述

相关文章:

  • 基于Android的图书借阅和占座系统(源码+lw+部署文档+讲解),源码可白嫖!
  • C++ 环境设置
  • Linux中查看占用端口号的进程信息的方法
  • ✅ Ultralytics YOLO验证(Val)时自动输出COCO指标(AP):2025最新配置与代码详解 (小白友好 + B站视频)
  • 使用正则 删除代码 注释
  • YOLO11改进-模块-引入可变形交互注意力模块DIA-Module
  • Python高阶函数-eval深入解析
  • 企业级开发SpringBoost玩转Elasticsearch
  • HashMap 如何解决哈希冲突?ConcurrentHashMap 如何保证线程安全?进程和线程有什么区别?多线程有什么优缺点?...
  • 网页常用字符大全
  • 嵌入式行业常见平台交互协议全解析
  • 2025-04-07(DS复习):Databricks DLT 详解
  • 阶段测试 【过程wp】
  • 【PalladiumZ2 使用专栏 1 -- 波形 trigger 抓取详细介绍】
  • I have something to say about Vue Node.js
  • 二十七- Scala
  • 【仪器仪表专题】案例:信号高电平到底是看顶端值还是最大值?
  • Python 中用于判断一个集合是否为另一个集合的超集issuperset
  • 当前主流的LLM Agent架构、能力、生态和挑战
  • 小球反弹(蓝桥杯C语言)
  • 杭州企业做网站/关键词排名怎么做上去
  • 做振动盘的企业网站/网站seo技术
  • 网页游戏网站7/上海seo网站优化
  • 手机网站与PC网站/网络营销技巧
  • 网站建设开发的主要流程/黄山网站建设
  • 如何用wget下载WordPress/优化关键词快速排名