# OpenDevKeilAlt **Repository Path**: icemoun/open-dev-keil-alt ## Basic Information - **Project Name**: OpenDevKeilAlt - **Description**: 为应对传统Keil开发中的挑战,本文将介绍两种高效、免费且全开源的替代方案:Keil MDK社区版与STM32CubeIDE - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-11-09 - **Last Updated**: 2025-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 开源嵌入式开发工具 为应对传统Keil开发中的挑战,本文将介绍两种高效、免费且全开源的替代方案:Keil MDK社区版与STM32CubeIDE。 #### 1.Keil MDK社区版 Keil MDK社区版是Arm公司官方推出的、‌针对个人和中小企业的免费版本,它‌完全兼容MDK的软件包、设备支持、调试器及所有中间件‌(如RTX、CMSIS-Driver等),资源获取和项目管理方式与专业版完全一致,并且社区版并不存在限制程序代码和常量数据的问题,在生成hex文件超过32KB时也可以正常编译。 ##### 1.1 安装与使用 (1)https://www.keil.arm.com/mdk-community/ 点击以上连接,进入Keil官网,如下图所示,当前页面包含了社区版的详细下载方法及详细的免费license申请方式。需要注意的是安装前最好是卸载掉电脑中使用的KEIL,避免发生冲突。 ![图片](./image/1.jpg) (2) 如下图所示,ARM Compiler需要选择Use default compiler version 6 ![图片](./image/2.jpg) (3) 如果遇到CMSIS版本与ARM Compiler版本不兼容的问题,需要将CMSIS版本更新到最新,使用软件自带的Pack Installer,搜索CMSIS并更新。 (4) 如果更新CMSIS后仍然出现vfpcc错误,需要确保头文件路径指向更新的CMSIS。 (5)如果出现error: no member named 'lP' in 'NvlC Type的问题,需要打开misc.c文件,将错误处更改为 NVIC->IPR[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority; ##### 1.2 效果验证 (1)验证环境: window11系统、KEIL MDK社区版、STM32F407VET6芯片开发板; (2)验证结果:编译程序生成hex文件,文件大小为55KB ![图片](./image/3.jpg) 程序可以成功烧录到芯片中,并且通过串口打印数据的程序成功运行。 #### 2.STM32CubeIDE ‌STM32CubeIDE是意法半导体(STMicroelectronics)官方推出的一款‌免费的、高度集成的开发工具,专为 STM32 微控制器(MCU)设计。它可以说是 STM32 开发者“一站式”的解决方案。 ##### 2.1 新建基于STM32CubeIDE的STM32工程 File → New → STM32 Project ![图片](./image/4.png) ##### 2.2 删除无用文件/文件夹 删除Inc、Src文件夹 Inc:新建工程产生的头文件文件夹 Src:新建工程产生的源文件文件夹,main.c文件在这里 保留以下文件夹 Includes:CubeIDE自动生成的文件夹 Startup:CubeIDE版本对应的单片机启动文件.s在这里,保留 xxx.ld:编译链接用脚本文件,需保留 ##### 2.3拷贝CubeIDE工程文件至Keil工程目录下 从CubeIDE工作区中移除对应工程 ![图片](./image/5.png) 将CubeIDE相关文件拷贝至Keil工程文件目录下 ![图片](./image/6.png) 导入CubeIDE工程,File → Open Projects from File System… ![图片](./image/7.png) ##### 2.4配置STM32CubeIDE源文件与头文件路径 右击工程文件 → Properties或选中工程文件 → Project → Properties C/C++ → C/C++ General → Paths and Symbols → Source Location在此添加项目编译所需的源文件路径 将所有需要参与编译的.C文件路径添加进来,目标文件夹与工程文件在同一目录下,会自动转换成相对路径。 注:CubeIDE会识别所设定路径下的根目录与子目录文件,参与到编译中。若目标目录下存在需要排除的文件或文件夹,可在项目浏览器内右击对应文件或文件夹,Resource Configurations → Exclude from Build .根据实际需要勾选对应的编译配置,即可在排除对应文件或文件夹。 ##### 2.5设置CubeIDE工程编译所需宏定义 找到Keil源工程所配置的全局宏定义 在CubeIDE中右击工程文件 → Properties 或选中工程文件 → Project → Properties C/C++ → C/C++ General → Paths and Symbols → #symbols ##### 2.6编译配置组 CubeIDE提供了类似Keil的多Target配置功能, 通过下图中的Manage Configurations进行配置, 每组配置的源文件与头文件路径配置均独立,配置较为简单。 ![图片](./image/8.png) 配置完成后可以进行编译,编译成功可以正常使用 #### 3.对比以及建议 以下是KEIL社区版和STM32CubeIDE的对比表格、使用建议及结论: | ‌**对比维度**‌ | ‌**KEIL社区版**‌ | ‌**STM32CubeIDE**‌ | | ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | ‌**费用**‌ | 免费(针对个人和中小企业) | 免费 | | ‌**兼容性**‌ | 完全兼容MDK的软件包、设备支持、调试器及所有中间件(如RTX、CMSIS-Driver等) | 专为STM32微控制器设计,高度集成STM32CubeMX、HAL/LL库与FreeRTOS | | ‌**编译器性能**‌ | 编译器性能和代码优化优于STM32CubeIDE的GCC,编译速度更快,生成的代码更小,执行效率更高 | 使用GCC编译器,编译速度相对较慢,生成的代码可能较大,占用更多内存和存储空间 | | ‌**调试功能**‌ | 调试体验流畅、专业,支持Event Recorder、Logic Analyzer等高级调试工具 | 功能齐全,但界面略重,集成了图形化调试等更多功能,这些功能在运行时可能消耗更多资源,导致速度变慢 | | ‌**代码编辑能力**‌ | 代码编辑功能相对较弱,但满足基本需求 | 代码编辑功能更强大,如代码提示、函数预览等,支持Eclipse插件,可扩展性强 | | ‌**生态系统支持**‌ | 拥有庞大的生态系统,包括广泛的开发者社区、技术支持和第三方工具支持 | 生态系统相对较小,但ST官方提供持续的技术支持和更新 | | ‌**跨平台支持**‌ | MDK6社区版支持跨平台(Windows、Linux、macOS),但当前社区版主要基于Windows | 基于Eclipse,支持跨平台(Windows、Linux、macOS),但官方推荐使用Windows版本以获得最佳体验 | | ‌**学习曲线**‌ | 对于已有Keil使用经验的开发者来说,学习曲线较平缓 | 对于初学者来说,可能需要一定时间来熟悉图形化配置工具和集成开发环境 | | ‌**适用场景**‌ | 适合已有成熟工程或非STM32芯片的移植,以及追求编译优化和调试性能的开发者 | 适合STM32微控制器的初学者和快速原型开发,以及追求免费与生态完整的开发者 | ‌**使用建议**‌: ‌**结论**‌:在多数情况下,‌**使用KEIL社区版更为合适**‌。这主要基于以下几点考虑: - ‌**编译器性能和代码优化**‌:KEIL社区版在编译器性能和代码优化方面表现更优,能够生成更高效、更紧凑的代码,这对于资源有限的嵌入式系统来说至关重要。 - ‌**调试功能**‌:KEIL社区版提供了更专业、更流畅的调试体验,有助于开发者快速定位和解决问题。 - ‌**生态系统支持**‌:KEIL拥有庞大的生态系统,包括广泛的开发者社区、技术支持和第三方工具支持,这有助于开发者更好地应对嵌入式开发挑战。