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

📅 2026/7/8 4:56:06
MCUQuickStart:一键生成 STM32 / GD32 的 Keil、CMake、RTOS 工程
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 / STM32F4xxGD32F10x / GD32F4xx8 MHz / 25 MHz 外部晶振选择中英文界面亮色 / 暗色主题一句话概括它不是 IDE也不是 CubeMX 替代品而是一个更轻量的工程脚手架。适合那些你已经有官方 SDK但不想每次都手动搭 Keil / CMake 工程的场景。2. 支持的芯片系列当前版本支持 4 个系列共 37 个型号系列内核厂商型号数STM32F10xCortex-M3STMicroelectronics9STM32F4xxCortex-M4STMicroelectronics6GD32F10xCortex-M3GigaDevice8GD32F4xxCortex-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 portheap 文件例如heap_4.cFreeRTOSConfig.hRTOS 版本的中断文件SysTick 相关配置如果勾选 RT-Thread Nano工具会处理Nano 内核源码Cortex-M port 文件rtconfig.hboard.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.pyGUI 基于 PyQt6。12. 注意事项使用前需要注意几点本工具不分发厂商 SDK。需要你自己准备 STM32 / GD32 官方 SDK。如果要生成 FreeRTOS 工程需要准备 FreeRTOS Kernel。如果要生成 RT-Thread Nano 工程需要准备 RT-Thread Nano。生成工程中复制出的厂商 SDK 文件仍然受原 SDK 的许可证约束。13. 后续计划后续可以继续做的方向包括支持更多芯片系列增加更多板级模板增加 lwIP 等中间件集成增加更多 RTOS 示例工程增加工程体检功能输出更详细的生成报告增加更多适配芯片的 linker script 和 startup 规则结语MCUQuickStart 不是一个庞大的平台它更像是嵌入式开发里的一个小型加速器。每次新建 STM32 / GD32 工程时少配几次路径少找几次启动文件少踩几个 RTOS 移植坑节省下来的时间就可以直接拿来写真正的业务代码。如果你也经常被工程初始化打断节奏可以试试这个工具。如果它对你有用欢迎到 GitHub 给 MCUQuickStart 点一个 Star。这个小动作对项目继续维护和传播都很有帮助。