尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程

MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程
📅 发布时间:2026/7/8 4:56:59

MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程

关键词:STM32、GD32、Keil、CMake、FreeRTOS、RT-Thread Nano、嵌入式工程模板、PyQt6

做嵌入式开发时,很多时间并不是花在业务代码上,而是花在“把工程先搭起来”这件事上。

新建一个 STM32 / GD32 工程,通常要做这些事:

  • 找 SDK、CMSIS、启动文件、标准外设库源码
  • 新建 Keil 工程并配置文件分组
  • 配 include path、设备宏、Flash 下载算法、RAM / ROM 地址
  • 复制main.c、中断文件、系统时钟文件
  • 想用 FreeRTOS 或 RT-Thread Nano 时,还要处理移植文件、SysTick、PendSV、heap、编译器兼容问题
  • 想用 CLion / VS Code 时,还要额外准备 GCC、CMake、链接脚本和启动文件

这些事情本身不一定难,但非常重复,而且小细节很多。

所以我做了一个小工具:MCUQuickStart。

它的目标很直接:把 STM32 / GD32 工程初始化这件重复劳动,变成几个选项,然后一键生成可编译工程。

1. MCUQuickStart 是什么

MCUQuickStart 是一个面向 STM32 / GD32 的 MCU 工程生成器。

它可以根据你选择的芯片型号、工程模板、可选库和构建方式,自动生成一个完整工程。

目前支持:

  • Keil MDK.uvprojx工程
  • GCC + CMake 工程
  • 裸机工程模板
  • FreeRTOS 工程模板
  • RT-Thread Nano 工程模板
  • STM32F10x / STM32F4xx
  • GD32F10x / GD32F4xx
  • 8 MHz / 25 MHz 外部晶振选择
  • 中英文界面
  • 亮色 / 暗色主题

一句话概括:它不是 IDE,也不是 CubeMX 替代品,而是一个更轻量的工程脚手架。

适合那些你已经有官方 SDK,但不想每次都手动搭 Keil / CMake 工程的场景。

2. 支持的芯片系列

当前版本支持 4 个系列,共 37 个型号:

系列内核厂商型号数
STM32F10xCortex-M3STMicroelectronics9
STM32F4xxCortex-M4STMicroelectronics6
GD32F10xCortex-M3GigaDevice8
GD32F4xxCortex-M4GigaDevice14

注意:MCUQuickStart 不内置、不分发芯片厂商 SDK。你需要先在本机准备好对应的官方 SDK 包,工具会从你指定的 SDK 根目录里自动匹配。

3. 准备 SDK 根目录

第一步是准备一个 SDK 根目录,把相关 SDK 放在同一个目录下。

例如可以是:

SDK_ROOT/ GD32F10x_Firmware_Library_V2.3.0/ GD32F4xx_Firmware_Library/ STM32F10x_StdPeriph_Lib/ STM32F4xx_DSP_StdPeriph_Lib/ FreeRTOS-Kernel/ rt-thread/

工具会自动匹配常见命名,也支持在首次使用时自动解压 SDK 根目录下的.zip/.7z包。

界面顶部的SDK 根目录区域会显示当前匹配结果:

![外

图中可以看到,工具已经匹配到:

GD32F10x_Firmware_Library_V2.3.0

这说明当前选择 GD32F10x 系列时,工具可以正常找到芯片库。

4. 选择芯片和工程参数

工程设置区域主要包含:

  • 芯片系列
  • 芯片型号
  • 项目名称
  • 外部晶振
  • 输出目录

例如这里选择:

芯片系列:GD32F10x 芯片型号:GD32F103C8T6 项目名称:MCUQuickStartDemo 外部晶振:8 MHz 输出目录:blog_demo_output

这些信息会影响生成工程中的:

  • 设备头文件
  • 设备宏定义
  • 启动文件
  • system 文件
  • Keil Flash 下载算法
  • RAM / ROM 地址
  • 时钟配置相关宏
  • CMake 和链接脚本配置

这里比较重要的是外部晶振。很多板子是 8 MHz,也有一些板子是 25 MHz。如果这个地方选错,工程虽然可能能编译,但系统时钟、串口波特率、定时器频率都可能不对。

5. 选择代码模板和可选库

下半部分是模板和可选库:

目前内置了三个代码模板:

模板说明
空工程最小main(),适合从干净入口开始写
LED 闪烁GPIO + 延时,适合新板点灯验证
串口打印USART printf 重定向,适合调试输出

可选库目前包含:

选项说明
FreeRTOS生成 FreeRTOS 工程
RT-Thread Nano生成 RT-Thread Nano 工程
GCC + CMake在 Keil 工程之外,同时生成 CMake 工程

FreeRTOS 和 RT-Thread Nano 属于 RTOS 选项,一般二选一。GCC + CMake 可以和裸机或 RTOS 工程一起使用。

本文示例选择的是:

LED 闪烁 GCC + CMake

也就是生成一个 GD32F103C8T6 的 LED 示例工程,同时输出 Keil 和 CMake 两套构建入口。

6. 点击生成工程

参数选好后,点击生成工程。

生成成功后,界面会出现绿色结果面板:

![外链图片转存

这个面板会显示:

项目创建成功 - 校验全部通过 检查:10 项通过,0 个警告,0 个错误

右侧还有打开输出目录按钮,方便直接进入生成后的工程文件夹。

本次示例生成出的目录结构大致如下:

MCUQuickStartDemo/ APP/ CMSIS/ DRIVER/ FIRMWARE/ HARDWARE/ MDK-ARM/ STARTUP/ SYSTEM/ USER/ CMakeLists.txt MCUQuickStartDemo.ld

其中:

目录 / 文件作用
CMSIS/CMSIS 相关头文件、设备文件、启动文件
FIRMWARE/厂商标准外设库源码和头文件
USER/用户入口代码、中断文件、main 文件
MDK-ARM/Keil MDK 工程
STARTUP/GCC 启动文件
CMakeLists.txtCMake 构建入口
.ldGCC 链接脚本

也就是说,生成完成后可以直接打开:

MDK-ARM/MCUQuickStartDemo.uvprojx

用 Keil 编译。

如果勾选了 GCC + CMake,也可以用 CLion / VS Code 打开整个工程目录。

7. 日志和校验报告

我觉得这个工具里比较实用的一个点是:不是只告诉你“生成完成”,还会把检查项写进日志。

日志区会显示类似这些内容:

[DONE] [CHECK] OK Project directory [DONE] [CHECK] OK USER main.c [DONE] [CHECK] OK Firmware headers - 23 files [DONE] [CHECK] OK Firmware sources - 23 files [DONE] [CHECK] OK Device header - CMSIS/GD/GD32F10x/Include/gd32f10x.h [DONE] [CHECK] OK Keil startup - CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_md.s [DONE] [CHECK] OK Keil project - MDK-ARM/MCUQuickStartDemo.uvprojx [DONE] [CHECK] OK CMakeLists.txt - CMakeLists.txt [DONE] [CHECK] OK Linker script - MCUQuickStartDemo.ld [DONE] [CHECK] OK GCC startup - STARTUP/startup_gd32f10x_md.s

这些检查项主要用于确认:

  • 工程目录是否创建成功
  • USER/main.c是否生成
  • 标准外设库头文件是否复制
  • 标准外设库源码是否复制
  • 设备头文件是否存在
  • Keil 启动文件是否存在
  • Keil 工程是否生成
  • CMakeLists 是否生成
  • 链接脚本是否生成
  • GCC 启动文件是否找到

日志区右上角还有几个按钮:

按钮作用
复制诊断信息把当前工程参数、检查结果复制到剪贴板
保存日志将日志保存成文本文件
清空清空当前日志显示

如果生成失败,比如 SDK 没找到、输出目录不可写、缺少 FreeRTOS 包,日志里也会显示对应错误。这样排查问题会比弹一个简单报错框舒服很多。

8. FreeRTOS 和 RT-Thread Nano 做了什么

如果勾选 FreeRTOS,工具会根据芯片配置自动处理:

  • FreeRTOS kernel 源码
  • Cortex-M3 / Cortex-M4F port
  • heap 文件,例如heap_4.c
  • FreeRTOSConfig.h
  • RTOS 版本的中断文件
  • SysTick 相关配置

如果勾选 RT-Thread Nano,工具会处理:

  • Nano 内核源码
  • Cortex-M port 文件
  • rtconfig.h
  • board.c
  • 中断适配文件
  • ARMCC V5 / C90 兼容问题

这部分的价值在于:你不需要每次都手工确认 port 文件和中断入口,也不需要重复处理编译器兼容细节。

当然,生成出来的工程仍然是普通 C 工程,你可以继续按自己的项目风格修改。

9. 亮色 / 暗色主题和中英文界面

工具支持亮色和暗色主题。

也支持中文和英文界面。

这个项目不是一个复杂 IDE,但我希望它至少是一个愿意长期打开的小工具。所以界面上也做了一些细节,比如:

  • 下拉框弹层贴合控件位置
  • 下拉选项数量少时自动收缩高度
  • 选项多时只显示部分并滚动
  • 主题化圆角和边框
  • 中英文切换后语言项同步本地化
  • 日志区区分成功、警告、错误信息

这些东西看起来小,但对工具手感影响很明显。

10. 适合哪些人

我觉得 MCUQuickStart 比较适合这些人:

  • 经常新建 STM32 / GD32 工程
  • 经常需要快速验证新板子
  • 喜欢标准外设库,不想每次手搭 Keil
  • 想快速生成 LED / UART / RTOS 示例
  • 想同时保留 Keil 和 CMake 工作流
  • 团队里有新人,需要给他一个可编译的工程起点
  • 不想把半天时间花在复制文件和配 include path 上

它不追求大而全,核心目标就是把“起工程”这件事做快、做稳。

11. 下载和源码运行

项目地址:

GitHub: https://github.com/Majie-xixi/MCUQuickStart Gitee : https://gitee.com/mj_yyfddca/mcu_quick_start

如果这个工具刚好帮你省掉了搭工程的时间,也欢迎顺手在 GitHub 点个 Star。Star 对这种个人开源小工具很有帮助,可以让更多嵌入式开发者发现它。

如果使用打包版本,可以下载MCUQuickStart.exe直接运行。

如果从源码运行:

pipinstall-rrequirements.txt python main.py

GUI 基于 PyQt6。

12. 注意事项

使用前需要注意几点:

  1. 本工具不分发厂商 SDK。
  2. 需要你自己准备 STM32 / GD32 官方 SDK。
  3. 如果要生成 FreeRTOS 工程,需要准备 FreeRTOS Kernel。
  4. 如果要生成 RT-Thread Nano 工程,需要准备 RT-Thread Nano。
  5. 生成工程中复制出的厂商 SDK 文件,仍然受原 SDK 的许可证约束。

13. 后续计划

后续可以继续做的方向包括:

  • 支持更多芯片系列
  • 增加更多板级模板
  • 增加 lwIP 等中间件集成
  • 增加更多 RTOS 示例工程
  • 增加工程体检功能
  • 输出更详细的生成报告
  • 增加更多适配芯片的 linker script 和 startup 规则

结语

MCUQuickStart 不是一个庞大的平台,它更像是嵌入式开发里的一个小型加速器。

每次新建 STM32 / GD32 工程时,少配几次路径,少找几次启动文件,少踩几个 RTOS 移植坑,节省下来的时间就可以直接拿来写真正的业务代码。

如果你也经常被工程初始化打断节奏,可以试试这个工具。

如果它对你有用,欢迎到 GitHub 给 MCUQuickStart 点一个 Star。这个小动作对项目继续维护和传播都很有帮助。

相关新闻

  • SSE 和 WebSocket 怎么选?实时推送场景的技术取舍
  • 鼎讯TXMN-BLSG1 实测风电基地,电磁仿真有了规范化工具
  • 多头注意力头数选择:从 Baichuan-7B 的 32 头到 LLaMA-2 70B 的 64 头设计分析

最新新闻

  • 计算机毕业设计之基于Web的毕业班纪念册系统设计与实现
  • 生成式引擎优化(GEO)完全指南:原理、策略与行业实践全景解析
  • libboundscheck在OpenEuler系统中的集成与应用实践:终极安全编程指南
  • 3个步骤掌握Sketchfab Blender插件:终极模型导入导出完整指南
  • 阅读APP书源配置终极指南:3分钟解锁全网小说资源
  • 浙江靠谱的画册设计品牌哪家强

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号