尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Keil安装激活与报错排查全攻略:从C51到MDK的避坑指南

Keil安装激活与报错排查全攻略:从C51到MDK的避坑指南 有的新同事第一天来公司装开发环境卡在 Keil 上一个下午最后发现是装错了版本——装了个 C51工程却是 STM32 的。这种事在嵌入式这行太常见了。Keil 作为单片机开发最常用的 IDE说它简单吧网上教程一抓一把说它复杂吧光版本区别、Pack 管理、授权方式、报错排查就能劝退一批刚入门的朋友。这篇我就把自己这些年装 Keil、用 Keil、帮别人修 Keil 的经验完整过一遍。从版本选择、安装包获取、安装激活、到常见报错排查、开发环境优化一次讲清楚。内容偏实操提到的坑都是真实踩过的照着做能省不少时间。1. 先用对版本C51、MDK、C251 到底怎么选1.1 一个 Keil三个世界很多新手被 Keil 绕晕原因很简单Keil 不是一个软件而是一族软件。Keil C51、Keil MDK-ARM、Keil C251、Keil C166彼此独立互相不能替代装的时候就要选对否则后面做什么都别扭。版本适用内核/芯片典型芯片Keil C518051 内核STC89C52、AT89C51、W77E58Keil C2518051 扩展的 251 内核8xC251、部分工业控制芯片Keil C166C166 / XC166 系列英飞凌 XC164、C167Keil MDK-ARMARM Cortex-M 等STM32、GD32、NXP LPC、瑞萨 RA从实际使用概率看C51 和 MDK-ARM 占了九成以上。C51 用于 8051 系列MDK-ARM 用于 ARM Cortex-M 系列STM32、GD32 这些都是。需要注意的是这两个软件可以装在同一台电脑上但它们是两个独立的安装包、独立的授权互不通用。另外有个认知要纠正网上经常看到 Keil uVision5 这个叫法很多人以为它是一个独立版本。其实 uVision5 是 Keil 从 5.0 开始使用的集成开发环境界面名称C51 和 MDK 都可以装成 uVision5 的样子。你看到的C51 v9.60和MDK 5.37界面差不多但底层工具链完全不是一回事。1.2 版本号与编译器MDK 5.37 里面的学问MDK 版本号隔一阵就更新一个5.23、5.28、5.34、5.37……版本号背后真正影响你开发的是内嵌的 Arm Compiler 版本。从 MDK 5.37 开始Arm Compiler 6简称 AC6成为默认编译器部分版本还捆绑了 Arm Compiler 5。AC6 基于 Clang 架构编译速度快但和老的 AC5 在语法检查、编译告警上有差异。比如 AC6 对类型转换更严格、对变量定义位置有要求老工程直接迁移到 AC6 经常报一堆警告。我的建议是新工程直接上 MDK 5.37 及以上用 AC6没必要回头用老编译器。维护老工程先看工程用的什么编译器如果是 AC5 且代码量大、第三方库老尽量装支持 AC5 的 MDK 版本5.36 及之前通常同时支持 AC5/AC6也方便对比编译结果。学校课程 / 老教材很多教材还在用 5.23 或 5.14这类版本对 WIN10/WIN11 兼容性略差但安装简单够用。1.3 芯片支持包Pack决定你能开发什么MDK 装好后默认并不认识所有芯片STM32F103、GD32E230、瑞萨 RA4M1……这些都需要对应的Device Family Pack支持。Pack 相当于该系列芯片的身份证 启动文件 Flash 算法 外设寄存描述的合订本。装错 Pack 或版本不匹配时典型表现是新建工程找不到芯片型号或者编译链接时报告某个 Flash 算法不存在再或者烧录时提示 No ULINK Device found 之类和调试器无关的诡异错误。很多装好 Keil 却没法建工程的求助帖根源都是 Pack 没装对。Pack 安装有两种路径在线安装打开 Keil点 Pack Installer按芯片厂商和型号筛选下载。这种方式最省事但国内网络有时很慢或者直接失败。离线安装去官方下载 .pack 文件双击后由 Keil 自动导入。这种方法适合网速不好、公司内网、或者需要固定版本做批量部署的场景。离线安装时有一个很值得注意的坑.pack 文件双击后没有反应或者提示 Pack Install 硬件错误。这类问题和文件本身关系不大更多是因为 Keil 的 Pack 服务进程被占用、或者杀毒软件拦截了写目录权限。解决办法我放在后面第 3 章和第 6 章细说。2. 安装包从哪来官方渠道与第三方渠道的风险对比2.1 官方下载的真实路径Keil 的官方下载地址并非一个固定链接而是有固定规律的。如果你用的是 MDK直接访问 Arm Keil 官网在 Download 页面选择 MDK 版本即可。C51 和 C251 同理都在各自的下载中心。这里有个官方归档技巧很多人找不到老版本比如 5.23、5.14。Arm 官网的 Download 列表一般只保留最近两三个版本想下载特定历史版本可以在官网的 Previous Versions 或版本归档页面找。对做产品维护、或者要复现老工程编译环境的人来说这个能力很实用。需要说明的是官网下载大文件在国内经常慢得离谱。我见过有人用浏览器下 MDK 5.37下到一半断掉重来折腾了一上午。比较稳妥的做法是用浏览器自带下载不要开多线程加速或者选择网络空闲时段下。如果公司有高速网络或海外节点下载体验会好很多。2.2 所谓全部版本安装包的下载坑标题里提到附全部版本安装包这其实是网上很多网盘分享资源的通用话术。这类资源确实方便但风险也不小我梳理一下捆绑安装/垃圾软件从非官网的 exe 安装包很容易捆绑全家桶。装机时一个不留神就多了三五个没用的软件还很难卸载干净。版本被改动有人为了无脑激活在安装包里预置了修改过的动态库或脚本。这种包短时间内能用但后续升级 Pack、连接调试器时经常出各种灵异问题还不好排查。文件损坏网盘下载大文件途中校验缺失解压到一半报错、安装到一半说找不到文件这种情况并不少见。杀毒软件误报与真实报毒边界模糊安装包里的注册机/补丁文件本身就是高危特征很多杀毒软件会直接下手。你根本分不清是误报还是真毒。我的态度很明确安装包尽量从官网获取哪怕慢一点至少环境是干净的。工程不差这几个小时后面排错省下的时间远超下载等待。至于全部版本说实话大多数人用不到——你不是做软件维护的不需要 4.x、5.x 各个版本都留一份真有多种版本需求也是通过同一版本 不同编译器解决而不是装一堆 Keil。2.3 下载中途的校验与杀毒软件误报下载安装包之后建议先校验一下文件是否完整。MDK 的官网安装包一般有对应的校验值MD5 或 SHA在下载页会标注。Windows 下可以用 PowerShell 执行 Get-FileHash 计算比对。安装过程中关闭杀毒软件或添加白名单是很多老手会做但因为风险高低不一而争议很大的操作。我的建议是如果是官网下载的安装包可以放心添加信任如果是非官网渠道下载的安装前先右键查一下文件数字签名没签名的包要格外小心。3. 干净安装全流程从解压到编译第一个工程3.1 安装前的系统准备Keil 对系统要求不算高但有几个事项必须提前处理第一安装路径不要带中文和空格。默认路径是C:\Keil_v5这个路径结构合理——短、无空格、无特殊字符。有些人图省事装到D:\软件\Keil后面 GCC 工具链、命令行编译、持续集成脚本全都可能因为中文路径出问题。第二关闭杀毒软件的实时防护。这一步的争议我在前面说过只针对官网安装包。Keil 安装过程中要写入注册表、创建服务、更新 PATH 环境变量部分杀软对这类行为敏感可能会导致安装中途失败或组件缺失。第三预留足够的磁盘空间。很多人以为 Keil 只有几百 MB实际上装了芯片 Pack 后随便几个厂商的 Pack 就能到 10 GB 以上。尤其是 F4、H7 这种内部有大量 SVD 描述文件和 Flash 算法的占用比想象中大得多。第四Windows 用户名尽量为英文。Keil 会在用户目录下创建C:\Users\用户名\AppData\Local\Arm等文件夹。如果用户名是中文个别版本的编译器、调试器会出现奇怪问题比如无法生成调试信息、无法启动 JLink 服务。3.2 安装步骤与组件勾选以 MDK-ARM 5.37 安装为例流程如下运行安装包选择解压目录注意这只是临时解压路径不是安装路径。进入安装欢迎界面点击 Next。勾选同意 License Agreement点 Next。选择安装路径。这里建议保持默认C:\Keil_v5不要为了省 C 盘空间改到 D 盘——后续升级 Pack、安装插件、各种工具的默认关联都会基于这个路径。如果你实在要改务必保证路径纯英文。填写姓名、邮箱、公司名称。这里随便填即可但邮箱建议填写真实常用的因为有些组件注册或授权找回需要邮箱。点击 Install等待进度条完成。安装完成后Keil 会提示注册 PACK。安装过程结束后首次启动会打开 Pack Installer自动检测并安装基础 Pack。值得单独说的一个点安装过程中提示 Install Legacy Support 或 Install Arm Compiler 5 之类的可选组件尽量勾上。原因很简单AC5 和 AC6 在兼容性上各有优势。老库、老工程、某些国产芯片的 SDK 默认还是 AC5新工程用 AC6 编译更快也更规范。两个编译器都装上后面就不用为编译器的选择再折腾一次。3.3 芯片 Pack 离线安装解决 PACK Install 硬件错误在线安装 Pack 失败率不低尤其在网络不稳定的情况下。离线安装.pack文件是更稳的方式。离线安装有两种途径直接双击 .pack 文件。若.pack与 Keil 关联正确会自动跳到 Pack Unzip 界面并安装。手动导入。在 Keil 中选择 Pack Installer → File → Import from Local Directory选择 .pack 文件。离线安装时常见的 Pack Install 硬件错误 或者双击后没反应绝大多数是以下原因Pack Installer 正在占用同一个 Pack 文件关掉所有 Keil 窗口再次安装。** .pack 文件名称与内部不对应**个别情况下网上下载的 Pack 被改了文件名内部元数据和文件名不一致Keil 不认。此时需要把文件恢复成原始名称再试。权限不足Keil 安装目录或用户 AppData 的写入权限受限。以管理员身份运行 Keil 再导入。我推荐的策略是Pack 安装顺序从底层往上层装。比如 STM32F4先装Keil.STM32F4xx_DFPDevice Family Pack再装中间件有关的 Pack如果有用到。如果整个家族包版本比较新它会依赖一个较新的 CMSIS Pack。CMSIS 版本冲突时会出现 component is not available 之类的提示。遇到这种情况在 Pack Installer 中先装对应版本的Keil.CMSIS再装 DFP。3.4 第一次编译验证环境是否可用安装完成后建一个最简单的工程验证环境是否可用这一步很多人会跳过结果真正开发时才发现工具链有问题。新建工程的步骤大致是Project → New uVision Project选择路径并输入工程名。在 Device 弹窗中选择具体芯片型号。以 STM32F103C8T6 为例展开 STMicroelectronics → STM32F1 Series → STM32F103 → STM32F103C8点击 OK。弹出 Copy STM32 Startup Code 时选 Yes。这会自动添加启动文件到工程。在左侧 Project 窗口中右键 Source Group添加一个新的 C 文件写入简单的 main 函数比如点亮 LED 或一个空循环。点击 Build 按钮快捷键 F7观察 Output 窗口。如果出现0 Error(s), 0 Warning(s)环境基本就通了。这里有个细节很多新人编译时报Error: L6218E: Undefined symbol main或者Error: L6411E: No compatible library exists大概率不是环境问题而是工程里根本没有添加 main 文件或者启动文件没有添加。4. 授权激活避开注册机走正规授权路径4.1 评估版到底限制了什么安装完 Keil 不激活默认处于评估模式。C51 和 MDK 的评估限制不太一样MDK-ARM 评估版代码量限制 32 KB。也就是说你写的程序编译后如果超过 32 KB链接会直接报错。对做小实验、跑点简单外设来说32 KB 其实够用一阵子但一旦上 RTOS、加 GUI、存大数组很容易就超了。C51 评估版同样有代码量限制典型是 2 KB。8051 的工程本身能写很大2 KB 几乎就是点个灯多一点的水平不太适合正经开发。C251 / C166类似限制。所谓激活就是让软件处于完整授权状态解除代码量限制并可以使用所有调试特性。官方提供的授权方式包括单机版 LicenseNode-Locked License、浮动版 LicenseFloating License、订阅版Subscription。个人学习可以申请评估 License学生和高校教师可以申请教育 License商业开发就直接购买。4.2 正规授权渠道与购买建议很多个人开发者一听到买 License就退缩其实价格没有想象中那么吓人。MDK-ARM 的专业版 License 价格确实不低但它的评估版对个人学习和初期验证是完全够用的。如果你只是学单片机、做课程设计、跑点开源例程32 KB 限制大部分场景都够用。真正做项目尤其是涉及商业交付不要用盗版或注册机因为这会带来法律风险而且和工程伦理过不去。购买正规授权的路径大致是在 Arm Keil 官网选择 MDK 版本与授权类型。如果是公司采购可以联系代理商获取报价通常有批量折扣。购买后Arm 会发送 License 到邮箱。在 Keil 中 File → License Management粘贴 License点 Add License即可。4.3 为什么我建议你别用注册机关于激活这里必须多说几句。网上流传的各种Keil 注册机Keil 破解工具激活码生成器使用前要想清楚三件事安全风险注册机本质是恶意代码的天然载体。为了绕过验证它们通常要注入到 Keil 进程中或者修改系统时间、注册表、驱动层。这类程序在杀毒软件眼里和木马没有本质区别你根本不知道它除了生成激活码之外还做了什么。现实中有很多人的电脑在用了注册机之后出现盗号、挖矿、文件被加密勒索的情况。用户体验风险这类工具生成的激活码一部分可以正常通过验证一部分授权状态不稳定过一段时间报license expired或Invalid License。又因为注册机本身不合法你没法找官方要支持。职业风险嵌入式这行很小的公司代码和工具链的合规性也是技术负责人要操心的事。个人学习用盗版也许一时爽到了做商用产品阶段需要额外谨慎。所以我给的建议一直是个人学习用评估版或申请教育 License商业开发买正版。评估版不够用说明你已经到了一个值得为工具付费的阶段了。如果你真的收到了license expired或者注册机时间过期的提示第一反应不是找新的注册机而是检查一下系统时间是否被改乱、是否有残留的注册表项干扰授权验证。清理干净后重新申请评估 License 或购买正版 License局面反而简单。5. 安装后的必做配置让 Keil 真正好用起来5.1 Pack 包路径移植与清理默认情况下Pack 被安装在C:\Users\用户名\AppData\Local\Arm\Packs和 Keil 安装目录下的ARM\PACK里。这个路径占用 C 盘空间且不方便管理很多开发者会把它改到其他盘。改路径的方式有两种在 Pack Installer 中设置打开 Pack Installer → Tools → Set Packs Folder选择你想放 Pack 的目录比如D:\KeilPacks。Keil 会自动迁移已有 Pack。手动改注册表或 ini 配置文件风险较大不推荐新手操作。这里有个很典型的坑更改 Pack 路径后老工程打开报 missing device 或 pack not installed。这是因为工程文件中的 Package 版本和当前路径下的 Pack 版本对不上。此时需要打开 Pack Installer 确认对应 Pack 是否已经安装或者重新选择设备。还有一种情况是网上下载的工程文件中捆绑了.pack引用但你没装对应版本也会报这个错。另一个实用技巧是定期清理无用的 Pack 版本。同一个芯片型号因为软件更新你可能装了好几个 DFP 版本比如 STM32F1 的 1.0.8、1.1.0、1.2.0。不用的可以卸载既省磁盘空间也减少 Pack 版本冲突的概率。卸载方式Pack Installer → 选 Pack → 右侧 Uninstall。5.2 代码格式化给 Keil 配上 AstyleKeil 自带的编辑器代码格式化能力比较弱缩进、大括号风格自动调整做得很一般。很多从 VS Code 转过来的人会很不习惯。社区通用的解决方案是给 Keil 挂Astyle外部工具。Astyle 是一个开源的 C/C/Java 代码格式化工具命令行方式运行可以无缝集成到 Keil 的 Tools 菜单中。配置步骤下载 Astyle 可执行文件放到任意路径建议C:\Keil_v5\ARM\ASTYLE\astyle.exe。Keil 中 Tools → Customize Tools Menu → 新增一项Command:C:\Keil_v5\ARM\ASTYLE\astyle.exeArguments:--styleallman --indentspaces4 !EInitial Folder:!E保存后Tools 菜单中即可一键格式化当前编辑的文件。!E是 Keil 的自定义参数表示当前文件的完整路径。Astyle 会直接修改当前 C 文件并生成一个.orig备份文件。如果你用的是 AC6 编译器Astyle 还能顺带把注释缩进、括号风格统一到工程规范对多人协作尤其友好。5.3 汉化与界面配置很多初学者习惯中文界面网上Keil uVision5 汉化包的关键词热度一直很高。汉化的原理很简单Keil 的界面文案存储在安装目录的某个 DLL 或资源文件中汉化包本质上是用一个修改过的资源 DLL 替换原文件。但我不建议用这类汉化包原因和激活部分类似——你无法确认替换的 DLL 是否干净且每次 Keil 小版本升级汉化包可能失效又得重新找。我对汉化的态度是Keil 的菜单词量不大配合网上翻译对照几天就习惯了。真要看不懂先补一点英文基础或者用在线翻译查一下术语。对一个嵌入式开发者来说读写英文文档本身也是基本功之一倒不如把这个环境当作学习机会。如果说界面配置有什么是真正值得调的我推荐这几个Editor → Encoding默认 UTF-8如果你的工程文件是 GB2312 编码中文注释会乱码。手动切换到正确编码。Editor → Auto Indent设为 Smart写代码时大括号自动缩进会舒服很多。Colors Fonts背景色调整为护眼深色或者调大字号对长时间调试很有帮助。5.4 调试时如何优雅查看结构体变量这是一个高频问题也是热词里出现的点Keil 调试助手里面的 debug 模式如何显示结构体变量。Keil 的调试功能默认在 Watch 窗口直接输入变量名就能看到基础类型的值。但是结构体变量、数组、指针指向的内容如果直接输入名字有时只显示一个地址或者参数展开很乱。实用方法如下在 Watch 1 窗口按 F2 添加变量名输入结构体变量名比如app_config回车后点开前面的箭头展开成员。如果变量是局部变量且处于优化状态Watch 窗口可能显示not available。此时需要把优化等级调低Options for Target → C/C → Optimization 改到 Level 0 或调试友好模式并确保编译时勾选了 Browse Information 和 Debug Information。想查看指针指向的结构体内容在 Watch 窗口输入*p_struct即解引用指针。系统寄存器、外设寄存器Peripheral 菜单里按外设分类查看比 Watch 窗口更直观。特别注意AC6 优化等级较高时局部结构体变量常被寄存器化或优化掉调试时看不到是正常的。可以先临时把优化等级降低调试通过后再恢复。这个方法比反复打断点更省时间。6. 高频报错排查与解决实录6.1 报错速查表下面这些错误是社区求助里出现频率最高的。我按错误提示关键字归类整理错误提示关键字可能原因解决思路No ULINK Device Found调试器未连接/驱动异常/调试器没选对检查 ULINK/J-Link 驱动Options for Target → Debug 选择正确调试器Error: R6002编译器运行栈不足或系统资源问题重启 Keil重装编译器检查系统环境变量该进程已终止因为它无法分配更多的内存编译/调试时内存不足关闭多余软件减少编译并行度增大虚拟内存Pack Install 硬件错误Pack 文件占用或权限不足关闭 Keil 重启安装管理员身份运行检查 .pack 文件完整性L6218E: Undefined symbol缺少源文件/库文件检查工程文件是否完整头文件路径是否包含L6411E: No compatible library exists库文件与编译器版本不匹配重新编译库或用匹配版本的库Cannot access target目标板未上电/接线错误/复位电路问题检查 SWD/JTAG 接线目标板供电调试器连接6.2 No ULINK Device Found 排查实录这个错误是调试环节最常见、吵得最多的问题。名字里带 ULINK但实际很多场景用的是 J-Link 或者 ST-Link提示都类似。排查顺序非常重要照着这个顺序做大多数问题能快速定位检查调试器驱动。在设备管理器中看是否识别到调试器设备。J-Link 一般显示 J-Link 设备ST-Link 显示 STM32 ST-LINK。如果显示黄色感叹号说明驱动有问题重新装驱动。检查 Keil 的 Debug 设置。Options for Target → Debug 页面右边下拉框选择实际调试器。选了 J-Link 却插的 ST-Link自然找不到。检查接线和供电。SWDIO、SWCLK、GND 三根线必须接对另外目标板要供电调试器的 VCC 检测脚也要接否则调试器无法检测电平。检查复位电路。个别板子复位引脚外部电容过大导致调试器无法稳定复位内核。可以尝试把复位电容换小一点或者用调试器选项里的 Connect under Reset。设置里的 Reset 与 Flash Download 选项。不要勾选 Download to Flash 以外的多余动作某些配置会导致连接后立即执行 Flash 算法而失败。6.3 Error: R6002 与内存不足类问题热词里有 keil报错error r6002怎么回事 和 keil该进程已终止因为它无法分配更多的内存这两个问题和系统资源相关。R6002 是 C 运行时错误意思是浮点支持库未能正确加载或内存不足。老版本的 Keil 编译器偶尔会出现。解决思路关闭 Keil重新打开工程重新编译。清理编译器临时文件删除工程下的 Listings、Objects 目录中的遗留文件。检查系统环境变量是否有残留的旧版编译器路径冲突。在系统属性中增大虚拟内存尤其物理内存较小的老机器。至于 该进程已终止因为它无法分配更多的内存我遇到的真实案例工程太大 Pack 版本太多 杀毒软件扫描占用编译时内存耗尽。百度的结果大多是让关掉杀毒软件、清理后台进程但更底层的原因是 32 位 KeiluVision 本身是 32 位程序在 Windows 上默认只能访问 2 GB 虚拟内存。可以尝试使用大地址模式用工具修改 uVision.exe 的 LAA 标志位使它可以访问 4 GB 用户态地址空间。或者直接把系统虚拟内存加大到 8 GB 以上。如果以上还不行可以考虑用命令行编译或者改用其他构建系统CMake GCC绕过 uVision 的图形界面上限。6.4 注册机时间过期 和授权相关的坑热词里有一条 keil 注册机时间过期了怎么办。这是一个典型的误区。网上注册机生成的授权看起来是永久有效但 Keil 的授权验证机制中有时间戳和签名校验。当注册机生成的授权被识别为无效或过期时Keil 会报License Expired、Invalid License或Feature is expired。正确操作在 License Management 中删除现有授权记录Remove License。清除 Keil 中的授权缓存删除C:\Users\用户名\AppData\Roaming\ARM License或类似路径下的授权文件。重启 Keil重新输入正版 License或申请评估 License。确保系统时间是当前真实时间——有些用户为了绕过激活故意把系统时间调旧结果不仅软件异常系统证书、HTTPS 访问也会出问题。再次强调注册机这条路本身就不该走。不走这条路就根本不会遇到注册机过期这种问题。6.5 卸载与重装装坏了怎么干净重来装 Keil 装到一半失败、Pack 安装错乱、或者想换个版本最稳妥的办法是干净卸载再装。Windows 自带的卸载程序并不能完全清理 Keil 的注册表和残留文件。我习惯这样清理在控制面板/设置中卸载 KeilMDK 或 C51。删除安装目录比如C:\Keil_v5。删除用户目录下的残留C:\Users\用户名\AppData\Local\Arm、C:\Users\用户名\AppData\Roaming\ARM。删除注册表中和 Keil、Arm 相关的项。打开注册表编辑器搜索 Keil 和 ARM Ltd手动删除对应项。改注册表前记得备份。重启电脑再全新安装。这里提醒一句重装后别的工程打不开多数是因为原工程使用的 Pack 没装回来。先装 Pack再打开工程顺序不要反。7. 开发者生态GD32、STM32、瑞萨 RA 与开源替代7.1 国产芯片在 Keil 下的使用GD32、CKS32国产芯片这些年普及度越来越高GD32在不少项目里直接作为 STM32 的替代品。GD32 在 Keil 下使用有两种方案使用兆易创新官方 DFP Pack。在 Pack Installer 中搜索 GigaDevice安装对应 DFP新建工程时选择 GD32 系列芯片型号。使用 STM32 的 Pack改预定义宏。GD32 很多型号硬件和 STM32 兼容但需要注意外设库、Flash 延迟等差异。这个方案适合快速试用但不建议用于正式产品。CKS32中科芯类似的思路官方提供 SDK 和 Pack按文档安装即可。有一个常见的坑GD32 的 Pack 和 STM32 的 Pack 同时存在时新建工程容易选错设备。因为 GD32 的某些型号命名和 STM32 非常像。留意 Device 弹窗里的厂商名称别只看型号数字。7.2 瑞萨 RA 系列与 RASC 环境搭建热词里有 瑞萨rasc keil环境搭建这也是个典型场景。瑞萨 RA 系列芯片Cortex-M 内核可以用 Keil 开发但环境搭建比 STM32 多一步安装 RA 系列对应的 FSPFlexible Software Package和 RASCRA Smart Configurator。在 RASC 中生成初始化代码后导出为 Keil 工程。Keil 打开生成的工程确认 Pack 和编译器路径正确。这一步经常出的问题是RASC 生成的工程在 Keil 中编译时找不到头文件路径。解决方法是 Options for Target → C/C → Include Paths 中把 RASC 生成的ra\fsp\inc等路径添加进去同时确认宏定义_RENESAS_RA_已添加。7.3 从 Keil 到开源替代VS Code EIDE / CMake GCC最后聊一下开源替代方案。热词里出现了 开源 替代 keil这两年确实有越来越多的开发者尝试用免费工具链做开发。可用的组合包括VS Code EIDE 插件 ARM GCCEIDE 是一个图形化工程管理插件支持 STM32/GD32 等能直接导入 Keil 工程。STM32CubeMX CMake arm-none-eabi-gcc标准开源路线适合做持续集成和跨平台开发。PlatformIO ARM 平台更偏创客和快速原型也很好用。但我个人的观点是Keil 对微型 MCU、老芯片的兼容性仍然很难替代。C51、C251 这类架构开源工具链支持少得可怜Keil 依然是事实标准。做 8051 的同学短期不用纠结替换问题做 ARM 的可以并行尝试开源工具链两边都熟了再按项目场景选用。踩过这么多版本的坑之后我的习惯是装 Keil 前先想清楚自己要做什么芯片、用什么编译器、是否需要调试器。想清楚了安装激活基本就是 10 分钟的事想不清楚装完再改才是真正耽误时间的环节。如果你现在就卡在哪个报错上照着第 3 章的流程重新过一遍多半能自己解决。
返回列表