ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

STM32开发环境搭建保姆级教程:CubeMX与Keil MDK安装指南

STM32开发环境搭建保姆级教程:CubeMX与Keil MDK安装指南 很多刚接触STM32的朋友估计都有过这种经历板子到手了点灯程序在网上找了半天结果卡在了搭建开发环境这一步。STM32CubeMX 负责图形化配置引脚、时钟并自动生成初始化代码Keil5官方叫法是MDK-ARM负责把代码编译成固件、下载进芯片里调试。这两个工具是STM32开发的两件套只要把它们装好并成功点亮一颗LED你就等于真正迈过了嵌入式开发的第一道门槛。这篇安装教程我按“宝宝级”标准来写所有按钮位置、勾选项、容易踩的坑都会说明白零基础、学生党、自学转行的人都可以直接照着抄。1. 安装前必须搞清楚的几件事1.1 为什么STM32开发要同时搭配这两个工具STM32这类单片机本身是一颗裸芯片你要让它工作得先通过配置寄存器把引脚设成输入还是输出、时钟跑多快、串口波特率是多少然后才能写业务代码。如果全手写寄存器光一个串口初始化就能写出上百行代码新手很容易被劝退。STM32CubeMX就是解决这个痛点的它把芯片的引脚、时钟、外设都用图形化界面列出来你用鼠标点一点它自动帮你把初始化代码全部生成好还能直接生成Keil工程文件。Keil5则负责接住这些代码完成编译、下载和调试。可以这么理解CubeMX是“设计师施工队”帮你把地基和毛坯房搭好Keil是“装修队监理”你拿着设计图往里面添砖加瓦最后把成品烧录到板子并检查运行情况。所以这两者不是替代关系而是前后配合。网上有些人只装Keil硬啃寄存器也能学但开发效率和维护成本都很高尤其到了工程项目阶段基本离不开CubeMX的自动代码生成。1.2 版本选择和安装顺序先装CubeMX还是先装Keil版本方面不用追求最新。STM32CubeMX目前主流在6.9到6.12之间新版本操作方法基本一样我用6.x系列来演示。Keil5这边MDK-ARM 5.35到5.39都行经典版本资源多遇到问题容易搜到答案。芯片支持包我就用最常见的STM32F1系列来讲手里如果是F4、F0等其他系列原理完全一致只是选包时选对应的DFP包。安装顺序也不要乱。正确的是先装STM32CubeMX再装Keil MDK然后装芯片支持包最后装ST-Link驱动。为什么先装CubeMX因为新版CubeMX自带Java运行时环境装完它是独立的而Keil需要芯片支持包才能识别你的芯片型号芯片支持包通常由CubeMX在生成工程时去调用或者由Keil的Pack Installer来安装。如果你先装了Keil再装CubeMX也没有冲突但新手最容易犯的错误是装完Keil直接打开发现新建工程时根本找不到STM32芯片然后卡在那里。其实只是没装芯片支持包和安装顺序没关系。1.3 环境要求你的电脑能不能顺利跑起来基本是台Windows电脑就能装。Windows 10/11的64位系统最省心Win7老电脑也能跑但固件包下载和联网更新时要多留意兼容性。磁盘空间建议预留5GB以上因为后面要下载STM32Cube固件包一个F1系列的包就有几百MB装了F1、F4、F7等好几个系列后体积很可观。内存方面4GB能跑8GB以上流畅很多。STM32CubeMX基于Java新版安装包内置了JRE所以不需要你手动去配Java环境变量。但如果你电脑里已经装了Java版本太老或冲突可能导致CubeMX双击没反应这个我在后面的常见问题部分会专门讲。网络条件要能访问ST官网和Keil官网下载安装包和固件包需要联网这一步耐心一点别下载到一半就以为卡死了。2. STM32CubeMX 安装实操2.1 下载安装包官网注册全流程首先打开ST官网也就是STMicroelectronics的主站首页搜索框输入STM32CubeMX进入产品页面。页面上会有“Get Software”之类的按钮点进去它会要求你先注册一个ST账号。注册需要填邮箱、设置密码有些渠道还会发激活邮件激活后重新登录下载链接就会出现在页面上。下载下来是一个类似“en.stm32cubemx-win64.zip”的压缩包里面有一个安装程序。有的用户习惯去第三方网盘找“一键安装包”我建议尽量从官网下载原因很简单网盘里的安装包可能是旧版本也可能混入了额外的东西。你后面要花大量时间学习环境干净才能少些莫名其妙的问题。下载完最好用杀毒软件扫一遍安装包记得放在一个你找得到的位置比如D盘的Download目录。2.2 安装步骤逐条拆解双击、下一步、完成拿到安装程序后右键以管理员身份运行。为什么强调管理员因为软件要往系统目录写东西权限不足会报错。安装界面一路Next即可语言默认English。安装路径这块新手最稳妥的做法是用默认路径如果C盘空间紧张也可以改到D盘但切记路径中不要有中文和空格比如“D:\软件\CubeMX”这种带中文的路径后面容易引发奇怪的报错。安装过程中程序会解压一堆文件到指定目录还会自动检测Java运行时。正如前面说的新版CubeMX会自带JRE所以大多数情况下不需要额外安装Java。如果安装时提示缺少Java你去Oracle官网装一个Java 17版本装完再重新运行CubeMX安装程序即可。装好后桌面会出现STM32CubeMX的图标先不急着打开后面还有东西要设置。2.3 首次启动与固件包下载在线包和离线包两种方案首次打开CubeMX它会先让你接受许可协议问你是否检查更新这个选默认就行。进入主界面后要做最重要的一件事下载STM32芯片固件包。这步不做后面新建工程时选不到芯片。操作路径是Help - Manage embedded software packages打开后会看到芯片系列列表勾选STM32F1右下角Install在线安装。这里有个大坑在线下载速度很慢几百兆的包经常下载到一半就中断。我强烈建议改用离线包方式。到ST官网搜索“STM32CubeF1 Firmware Package”下载对应版本的ZIP文件然后在刚才那个Manage embedded software packages窗口里找到左下角的From Local按钮选中刚才下载的ZIP压缩包点击安装。这种方式稳得多不会出现下载到99%然后报错的绝望情况。固件包装完以后以后在CubeMX里选择STM32F1系列芯片时就不需要联网了。其它系列比如F4、F0也按同样思路安装用到哪个装哪个没必要一次性把几十个系列的包全装完很占磁盘空间。2.4 顺手把界面汉化了CubeMX默认是英文界面对英文不太熟的朋友会有压力。工具本身支持通过Babel语言包实现多语言界面网上有对应的汉化包把下载到的语言包jar文件放到CubeMX安装目录下的languages文件夹里重启软件后在设置里切换语言即可。我这里要提醒一句汉化包的版本必须和CubeMX版本对应版本不一致时旧界面可能出错比如菜单显示不完整、部分汉化乱码。我个人的建议是英文界面能学就学因为论坛讨论、官方文档、生成的代码注释全是以英文为基础的界面中文了英文资料照样看不懂。但如果你实在不习惯用汉化包降低初始门槛也行核心目的还是先把环境跑起来。3. Keil MDK 安装实操3.1 获取MDK安装包为什么别碰“Keil5破解版”Keil的官方工具叫Keil MDK-ARM也有人习惯叫Keil5。打开Keil官网的下载页面注册一个Keil账号后可以下载MDK安装包文件名类似mdk_536.exe。如果你在学校还可以留意官方针对教育用户的授权通道部分高校有合作许可。这里我必须专门说一句网上流传的那些“Keil5破解版”“一键注册版”尽量不要碰。嵌入式开发环境本身就比较脆弱破解版经常被阉割掉重要组件比如某些编译器版本、离线文档、插件组件等你后面用到才发现缺失组件排查起来特别痛苦。更现实的风险是这类修改版常常附带不明程序被认为存在安全风险这在热词榜上都能看到“keil5破解版危险”的关注度。学习阶段完全不需要冒这个险MDK自带评估模式编译容量限制在32KB以内跑点灯、串口通信、中段学习项目绰绰有余。等真的需要大工程再购买正版License或者申请教育授权思路清晰环境干净。3.2 安装流程细节路径规划、权限与许可界面双击mdk_536.exe安装过程和普通Windows软件很像。需要注意的有三处。第一处安装路径不要用默认的C:\Program Files\Keil_v5改成C盘根目录下的C:\Keil_v5这能避免很多权限相关的小毛病。以后你写工程文件也尽量用这个目录下的子目录来放置不要放在系统盘桌面防止被杀毒软件扫描拦截导致编译产物异常。第二处安装过程会弹出填写Name、Company、Email的对话框这三项随便填格式合法即可没有实际校验。第三处安装到后面可能会询问是否安装J-Link驱动、是否添加命令行工具之类的附加组件这里保持默认勾选即可尤其UT2和Cypress这些调试器驱动并不是每个都需要默认选项问题不大。安装完成后桌面会有Keil uVision5图标。第一次打开会提示你进入Pack Installer先不急着在线安装因为在线安装同样存在网络慢的问题我们下一步用离线包方式装芯片支持包。3.3 芯片支持包PACK安装不装这个你就建不了STM32工程Keil之所以打开新建工程找不到STM32核心原因就是没有安装对应的Device Family Pack简称DFP。STM32F1系列的包名是Keil.STM32F1xx_DFP。获取方式有两种一种是Keil自带的Pack Installer里在线搜索安装另一种是到Keil官网的Packs页面搜索STM32F1下载对应.pack文件然后直接双击安装Keil会自己导入。离线双击方式在网速不给力时特别香。一个DFP包大约100MB到200MB下载完成后双击.pack文件Keil会弹出提示问你是否安装点Install即可。装完后在Keil的Pack Installer界面里可以看到对应芯片包的版本号状态是绿色UP-TO-DATE。这一步完成后新建工程时Device选项里才会出现STM32F103C8之类的型号四舍五入这步就是胜负手。3.4 注册激活问题评估版、License和注册机那些事MDK安装完成后默认工作在LV0评估模式编译代码超过32KB会报错。对于学习STM32来说点灯、串口、传感器驱动、中段这些核心实验代码量通常不会超过这个限制所以评估版能陪你走完大部分入门阶段。激活码长什么样子打开Keil - File - License Management里面显示的是“LV0”或者“LV1”之类的授权等级。LV1就是有效许可证LV0就是评估版。很多教程会教人用注册机算号这里我不推荐也不展开。注册机面临着法律和安全风险而且一旦Keil更新或者电脑换硬件许可证就失效到时要重新折腾反而浪费时间。如果你是学生或者教师可以留意官方教育授权通道申请到免费License的概率很大。如果只是自学先用评估版把环境跑通把学习重心放在写代码上比花一整天破解软件划算得多。4. 用点灯实验验证整套环境4.1 在CubeMX中新建工程芯片选型与启动选择现在做个最简单的点灯实验验证整个环境是否真的安装成功。先用STM32F103C8T6为例这是最常见的蓝色pill开发板芯片。打开CubeMX依次选择File - New Project进入MCU Selector界面在左侧Part Number搜索框输入STM32F103C8右侧结果列表会出现STM32F103C8Tx双击进入工程配置界面。首次进入会有个弹窗问是否初始化所有外设选Yes。这一步自动把芯片的一些默认外设初始化了方便做图形化配置。如果你选No后续就得自己挨个添加外设新手建议直接Yes。顺手说一句在MCU Selector的搜索界面右下角还能看到这个芯片的引脚数、Flash容量、RAM容量等信息先学会看这些参数以后选型就有概念了。4.2 时钟、调试接口和GPIO配置三个最关键的页面工程配置界面里左侧是外设树。先点RCC把HSE后面的选项改成Crystal/Ceramic Resonator这是把外部高速晶振打开很多开发板上有8MHz晶振不用它的话后面时钟配置会受限。再点SYS把Debug选项改成Serial Wire这是开启SWD调试接口如果不改有些板子烧录程序后第二次可能就找不到芯片了。接着点Clock Configuration标签这一页是时钟树图形界面。我们需要在HCLK/MHz输入框里输入72回车它会自动计算PLL倍频系数和分频系数把SYSCLK配置到72MHz。如果显示红色说明某些分频配置不合理一般把APB1预分频改成8APB2改成2就能解决。时钟配置好后再去Pinout页面用鼠标点击芯片图上的PC13引脚把它选为GPIO_Output。你也可以选PA5配合正点原子、野火等开发板的LED引脚来验证PC13对应很多蓝板自带的LED用户比较通用。4.3 生成MDK工程生成后为什么要在Keil里确认编译器版本配置完GPIO切到Project Manager标签页。这里有几个重点Project Name填LedTest之类的工程名Project Location选到你的工作目录Toolchain/IDE必须选MDK-ARM下面还有个Minimum Version可选保持默认。很多人找不到MDK-ARM选项是因为这个下拉框默认值是空白点开下拉才能看到这也是热词里“stm32cubemx没有mdkarm”出现频率高的原因之一。全部填好后点右上角的GENERATE CODE按钮CubeMX会生成整个工程框架结束后会问你是否打开工程可以选打开。如果没弹窗就去刚才设置的工程目录下找进入MDK-ARM子文件夹双击后缀是.uvprojx的文件用Keil打开。打开时Keil可能会提示当前工程使用的是AC6还是AC5编译器新版MDK默认支持AC6保持默认即可。如果编译时缺编译器回Keil的Pack Installer面板检查工具链组件是否完整。4.4 Keil编译烧录一条龙ST-Link驱动与Flash算法Keil打开工程后别急着编译先检查两处配置。第一处点Options for Target按钮魔术棒图标进入Debug选项卡确认右侧Use后面选的是ST-Link Debugger而不是默认的ULINK。如果你用的是J-Link就选J-Link但新手我更推荐用十来块钱的ST-Link便宜稳定兼容性好。第二处进入Utilities选项卡确保Use Debug Driver是勾选状态这是让Keil通过调试器直接下载flash的开关。再做一步烧录前的准备安装ST-Link USB驱动。去ST官网搜索ST-Link USB driver下载安装即可装完把ST-Link插电脑USB口设备管理器里应当能看到STM32 STLink设备如果显示有黄色感叹号说明驱动没装好卸载重装一次就好。之后回到Keil点Load按钮或者按F8它会先编译再下载。第一次下载如果报“Flash Download failed”不要慌去Options - Debug - Settings里的Debug看到芯片ID读出说明通信正常再看Utilities - Settings里的Programming Algorithm需要检查有没有添加STM32F10x系列的Flash算法没有就点Add选对容量型号加进去再试一次。下载成功会自动复位运行此时开发板上的LED应该开始闪烁了。闪烁的代码其实已经写在main.c里了CubeMX生成的循环里只有空壳我们在USER CODE BEGIN WHILE位置加几行代码就能点灯/* USER CODE BEGIN WHILE */ while (1) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(500); /* USER CODE END WHILE */ }看到LED一秒闪一次说明从安装到烧录的整条链路彻底打通了。5. 安装过程中的高频问题与自救手册5.1 CubeMX双击没反应、打不开怎么办这个问题在热词榜里很常见。90%的情况是杀毒软件拦截了Java运行时或者电脑里的Java版本太旧导致启动失败。解决思路右键图标以管理员身份运行一次如果还是没反应把CubeMX安装目录整个加入杀毒软件白名单再试。如果依旧去控制面板卸载掉老版本Java装一个Java 17然后重启电脑。新版CubeMX自带JRE但旧版依赖系统Java如果你装的是那种被精简过的“绿色版”CubeMX缺少内置JRE又没手动装Java那启动不了就是必然的建议卸载重装官网原版。5.2 生成代码时找不到MDK-ARM选项或没有uvprojx文件CubeMX里Project Manager - Project Settings - Toolchain/IDE这一栏点开后是个下拉列表里面至少会有MDK-ARM、Makefile、STM32CubeIDE这些选项。如果你选的是MDK-ARM但生成后目录里没有.uvprojx多看看工程目录下的子文件夹CubeMX生成的项目里MDK的工程文件会在MDK-ARM子目录里。还有如果CubeMX版本比较新生成选项里可能会显示MDK-ARM V6.xx选这个也行。生成后如果你用旧版Keil打开新版工程它可能会提示工程由更高版本创建直接选Yes继续打开即可。5.3 Keil编译报错、找不到编译器、中文路径的坑编译报错Target not created最常出现在安装了破解版或精简版Keil的人群里缺失了ARM编译器组件。完整安装的MDK在C:\Keil_v5\ARM\ARMCC或ARM\ARMCLANG目录下会有编译器文件检查一下。如果文件在但编译还是报错去Options - Target页看右下角ARM Compiler下拉框旧工程可能默认选AC5而你装的AK6切换一下就好了。另外强烈建议工程路径不要有中文很多新手把工程文件夹命名为“点灯实验”结果编译时头像却报各种“cannot open source file”其实就是中文字符编码引起的路径问题。CubeMX和Keil对中文路径的支持都比较差这是我踩过坑之后非常认真的提醒。5.4 烧录失败“No target connected”和“Flash Download failed”烧录时快速排查顺序第一看ST-Link驱动是否正常设备管理器里有没有黄色感叹号第二看接线SWD只需要SWDIO、SWCLK、GND三根线加3.3V第三看Keil里Debug选项卡选择的仿真器是否正确第四打开Debug Settings看右下角有没有识别到芯片IDCODE没识别到说明通信失败第五Utilities里的Flash算法有没有添加。这几个步骤新手最容易忽略第二个和第五个。接线松了、杜邦线接触不良、Flash算法缺失三个里占了两个就足够卡你半天。我整理了一个速查表你下载报错时对照检查报错现象主要排查点解决办法No target connected / No target foundST-Link驱动、接线、供电重装驱动检查SWD四根线确认板子供电Flash Download failed - Cortex-M3Flash算法缺失、芯片型号不匹配Utilities里Add对应Flash算法确认型号容量一致Error: Flash Download failed - Cortex-M3芯片读保护或写保护用STM32CubeProgrammer解除读保护或先擦除全片Cannot load flash programming algorithm芯片包DFP缺失重装Keil.STM32F1xx_DFP.pack5.5 J-Link克隆提示、ST-Link替代和“keil5阻止软件联网”如果你用的是几十块钱的所谓“高性价比J-Link”Keil打开在线调试时会弹出警告提示你检测到克隆产品。这类提示不会直接让程序停止工作但会很烦而且盗版调试器的时序稳定性也存疑。建议直接换ST-Link V2十几块钱的东西稳定不弹窗资料也最多。关于“keil5阻止软件联网”这种说法常见于必须联网验证许可证的场景。我不是很建议去改防火墙规则或者断网使用因为这些操作通常是破解流程的一部分弄不好会把系统网络配置搞乱。正版MDK直接联网验证就能正常用评估版也不需要断网安静的做个守法用户反而省心。5.6 Keil左侧工程目录栏不显示、同时玩C51和STM32的问题热词榜里有一条“keil5左侧目录怎么显示”.这种情况多半是工程窗口被手动关闭了打开View - Project WIndow快捷键是左边那排图标里的文件夹点一下就能恢复显示。至于“keil5兼容c51和stm32安装”不少人有这需求是因为学校单片机课先教51后面转STM32。官方并没有提供一个安装包同时管C51和ARM比较稳妥的做法是把C51版和MDK版分别装到两个不同目录例如C:\Keil_C51和C:\Keil_v5各用各的工具互相不干扰。注意不要装到一个目录里覆盖文件会出诡异问题。如果你只装了MDK非要打开C51工程会提示找不到8051芯片这就是没装C51的典型表现后面需要玩51时再装也不迟。最后分享几个个人经验这一路装下来我最大的体会是安装顺序和下载渠道决定了你后面要踩多少坑。我自己最早是图方便装了一个网盘里的“全家桶安装包”结果Keil被阉割了编译器CubeMX打不开来来回回折腾了两天才把所有工具归置好。后来固定一个套路先装官网CubeMX再装官网Keil再用离线包方式装DFP和固件包最后装ST-Link驱动半小时内整套环境干干净净。还有个小习惯值得养成把下载好的安装程序、DFP包、CubeMX固件包zip都备份到网盘或移动硬盘。以后换电脑、装系统、重装环境时不需要再重新下载离线直接装效率高得多。最后再提醒一句CubeMX生成的代码骨架里凡是写着USER CODE BEGIN和USER CODE END注释之间的区域才是安全区自己写的代码放这里面下次重新生成代码时不会被覆盖。如果你在系统代码区里手写了一堆东西下次重新生成时很容易被冲掉到时候只能哭着恢复备份。环境搭好之后真正的乐趣才刚刚开始点灯、串口、PWM、传感器后面有得玩。
返回列表