简单理解:(keil) MDK-ARM 主流版本 + 发布时间汇总
一、你当前 Keil 版本信息从截图可以看到μVision V5.14.0.0MDK-ARM V5.14版权标注Copyright (C) 2015 ARM Ltd✅发布年份2015 年配套工具链Armcc V5.05 update 12015 年同期发布二、MDK-ARM 主流版本 发布时间汇总1、MDK5 系列μVision5MDK 版本发布年份重要说明MDK V5.142015 年你当前使用版本最早一批 MDK5 稳定版支持 STM32F1/F4 等经典 MCUMDK V5.152015 年底新增多款器件支持、编译器小版本迭代MDK V5.162016 年优化 Pack 安装管理器MDK V5.172016 年编译器 Armcc V5.06 更新MDK V5.182017 年大量新 MCU 器件支持MDK V5.20 ~ V5.262017–2019 年持续更新器件包、修复 bugMDK V5.27 ~ V5.322020–2022 年逐步兼容 Armclang 编译器支持 Cortex-M55/M33MDK V5.33 ~ V5.392023–2025 年全面主推 Armclang 编译器逐步弃用旧 Armcc 编译器2、MDK4 系列μVision4经典老版本MDK 版本发布年份MDK V4.20 ~ V4.602009–2012MDK V4.70 ~ V4.742013–20143、早期 MDK3 及以下μVision3/2MDK V3.x2003–2008 年μVision22000 年左右补充说明MDK5 从 **V5.00 版本2013 年** 开始改用包管理器Device Family Pack不再把芯片库内置在安装包内你手里的V5.142015是工业、家电类嵌入式项目使用最广泛的经典稳定版本兼容性极强很多老项目至今仍在用新版 MDK 从 V5.30 之后逐渐淘汰了你现在用的Armcc.exe编译器换成Armclang老工程直接升级大概率会出现编译报错。一、你的 Keil MDK V5.14 适配推荐 Device Pack 版本 不匹配会出现的问题1. 核心适配原则MDK5.14 发布于2015 年仅支持旧版 Keil PackDFP最高兼容STM32Cube_FW 1.15.x及更早的 STM32 器件包不兼容2017 年之后发布的新版 STM32Cube_FWv1.16 及以上、Keil Pack 4.x 系列编译器内置Arm Compiler 5.05 update1不支持 Arm Compiler 6ArmClang2. ST 主流单片机推荐适配 Pack 版本1STM32F1 系列最常用F103、F105、F107推荐 PackSTM32F1xx_DFP 2.3.0 ~ 2.4.0最高兼容上限STM32F1xx_DFP 2.5.0禁止安装2.6.0 及以上版本2STM32F4 系列F407/F429/F411推荐 PackSTM32F4xx_DFP 2.8.0 ~ 2.10.0最高兼容上限STM32F4xx_DFP 2.11.03STM32F0 系列推荐 PackSTM32F0xx_DFP 2.2.0 ~ 2.4.04STM32L1/L4 低功耗系列推荐 PackSTM32L1xx_DFP 1.3.0、STM32L4xx_DFP 1.0.0~1.1.05国产 MCU灵动 MM32、兆易 GD32灵动 MindMotionMM32_DFP 1.2.x ~ 1.4.x兆易 GD32GD32F10x_DFP 1.5.x通用规则所有器件 DFP 包发布时间必须 ≤ 2015 年底2016 年之后更新的 Pack 包基本都会出现兼容性报错。二、Pack 版本与 MDK5.14 不匹配会出现的典型问题问题 1RTE 组件报错、无法勾选标准库STM32CubeMX 生成工程必踩坑现象 打开 Manage Run-Time Environment外设库GPIO、USART、SPI 等灰色无法勾选提示Toolchain Version Not Match。原因 新版 DFP 内部依赖 AC6 编译器ArmClangMDK5.14 只有 AC5 编译器依赖校验失败RTE 组件直接锁死不可选。后果 CubeMX 生成的工程打开直接缺失启动文件、标准库文件工程无法编译。问题 2编译报错#29 expected a declaration/#279 expected an expression现象新版本 STM32 HAL 库使用了 C99 新语法、__attribute__高级属性、变长数组AC5.05 编译器语法不支持。后果大量头文件语法报错哪怕芯片能正常选择代码直接编译失败。问题 3芯片选型里找不到目标型号现象安装高版本 DFP 后在 Select Device 里搜不到你要用的 STM32 型号或者器件列表空白。原因新版 DFP 更换了器件描述文件格式MDK5.14 的 CPU DLL 解析不兼容。问题 4下载报错No Algorithm found for: xxx.axf无 Flash 下载算法现象器件能选中编译无错但下载时提示没有 Flash 算法。原因新版 DFP 的 Flash 下载算法文件.FLM做了加密、格式升级MDK5.14 旧版下载器无法识别加载 FLM 文件。问题 5工程莫名丢失启动文件、分散加载.sct 文件高版本 DFP 修改了 RTE 文件路径规则MDK5.14 无法自动关联启动文件、系统配置文件每次打开工程都要手动添加文件。问题 6调试异常无法进入断点、硬件仿真卡死高版本 FLM 下载算法、调试描述文件和 MDK5.14 的 DARMCMx.dll、SARMCMx.dll 版本不兼容J-Link/ST-Link 下载后断点失效、内核无法暂停。三、MDK5.14 安装 Pack 避坑操作步骤先卸载已安装的高版本 DFP 包只保留2015 年及之前发布的器件包关闭 Keil 自带的自动在线更新 Pack 功能防止后台自动升级 DFPCubeMX 生成工程时工具链选择MDK-ARM V5HAL 库版本选择STM32Cube_FW_V1.15及更早版本编译器必须固定使用默认的Arm Compiler 5不要切换 AC6 编译器。结论先说MDK5.14 原生完全不支持 STM32H7 任何官方 Pack 包手动把pack改为zip解压后放在pack包里面可以编译但是不能keil在线仿真keil下载失败可STM32CubeProgrammer软件直接下载生成的hex文件一、核心时间原因你的 MDK 5.14 发布时间2015 年STM32H7 系列芯片正式发布时间2017 年STM32H7 首个 DFP 器件包STM32H7xx_DFP 1.0.0发布于2017 年晚于 MDK5.14 两年。MDK5.14 的内核器件解析 DLL、RTE 环境、旧版 AC5 编译器都无法识别 2017 年之后为 H7 设计的 DFP 包格式。二、会出现哪些典型报错器件列表搜不到 STM32H7 全部型号安装 H7 任意版本 DFP 后在Select Device中检索不到 H7 系列芯片器件库无法加载。 原因H7 的器件数据库描述文件格式MDK5.14 老旧 CPU DLL 不兼容。RTE 运行环境全部灰色不可选STM32H7 的 HAL 库从诞生起就大量依赖 C99、C11 语法、结构体高级属性、变长数组MDK5.14 内置的Arm Compiler 5.05 update1编译器语法兼容性不足RTE 组件直接锁定禁用。无可用 Flash 下载算法No Algorithm foundH7 的 FLM 下载算法做了安全加密与格式升级MDK5.14 的旧版下载管理器无法解析 H7 的.FLM算法文件哪怕强行选中芯片下载直接报错。大量头文件语法编译报错H7 官方 HAL 库最低适配编译器要求已经高于 AC5.05会爆出#29 expected a declaration、#177 variable-length array is not allowed等语法错误。三、想要开发 STM32H7最低需要哪个 Keil 版本最低兼容版本MDK-ARM V5.24 及以上官方推荐起步MDK5.25 ~ MDK5.29可以同时使用 AC5 编译器开发 H7兼容性最好高版本 H7 DFP3.x 及以上强制要求MDK5.30Arm Compiler 6AC6不再支持 AC5 老编译器。四、补充适配建议你当前 V5.14 只能开发F0/F1/F4/L0/L1/L4 等 2015 年之前量产的 STM32 系列H7、G0、G4、U5、H5 等新型 STM32 必须升级 Keil如果不想换编译器继续用 AC5建议升级到MDK5.27搭配STM32H7xx_DFP 2.0.0 ~ 2.4.0版本的 H7 器件包稳定性最高。