ARTICLE DETAIL

资讯详情

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

Keil安装CKS32F103C8T6 PACK包全攻略:从踩坑到精通

Keil安装CKS32F103C8T6 PACK包全攻略:从踩坑到精通 1. 为什么一个PACK包能把人折腾到怀疑人生搞嵌入式开发的朋友大概率都经历过这种场景板子焊好了代码写完了打开Keil MDK准备编译下载结果在Device列表里翻来覆去就是找不到自己用的那颗芯片。尤其是用国产替代芯片的时候比如CKS32F103C8T6这颗明明引脚和STM32F103C8T6几乎完全兼容价格还便宜不少但Keil的器件数据库里就是没有它的名字。这不是Keil故意为难你而是Keil的器件支持机制决定的。Keil MDK从版本5开始把器件支持从IDE本体里剥离出来改成了Device Family PackDFP的形式也就是我们常说的PACK包。每个芯片厂商需要自己维护一个PACK包里面包含了器件描述文件、启动文件、外设寄存器定义、Flash烧录算法等关键内容。没有对应的PACK包Keil就不认识你的芯片编译、下载、调试全都无从谈起。CKS32F103C8T6是中科芯集成电路设计的一颗基于ARM Cortex-M3内核的MCU主打STM32F103C8T6的Pin-to-Pin替代。它的PACK包在官方渠道的获取并不像ST那样方便很多朋友在安装过程中会遇到各种报错、器件不显示、下载失败等问题。而实际上中科芯官方提供的PACK包名称是CS32F1xx_DFP这个命名和芯片型号CKS32F103C8T6看起来对不上导致很多人根本找不到正确的包。这篇内容就是把我自己在多个项目里反复安装、卸载、排查这个PACK包的经验整理出来从PACK包的获取、安装、配置到常见报错的处理一步步拆开讲清楚。不管你是刚接触国产MCU的新手还是已经用过几颗其他国产芯片的老手只要你在Keil里装CKS32F103C8T6的PACK包时卡住了这里应该都能找到对应的解法。2. 搞懂PACK包的底层逻辑再动手2.1 PACK包到底是什么为什么非装不可很多人装PACK包就是照着教程点下一步装完了也不知道里面到底有什么。我觉得有必要先把这件事讲透后面遇到问题你才知道该查哪里。一个标准的Keil DFP包本质上是一个按照CMSIS-Pack规范打包的压缩文件后缀是.pack内部结构大致包含以下几类内容器件描述文件.pdsc这是PACK包的“目录”Keil通过它来识别这个包支持哪些芯片型号、芯片有哪些外设、内存映射是怎样的。如果这个文件里没有CKS32F103C8T6的条目Keil的Device列表里就不会出现这颗芯片。启动文件startup_*.s芯片上电后第一条指令执行的地方负责初始化堆栈指针、中断向量表然后跳转到main函数。不同芯片的中断向量表数量和位置可能不同所以启动文件必须和芯片匹配。系统初始化文件system_*.c配置系统时钟树比如外部晶振频率、PLL倍频系数等。CKS32F103C8T6的时钟树和STM32F103基本一致但细节参数可能有差异。外设寄存器定义头文件*.h把芯片内部所有外设的寄存器地址、位域定义用C语言宏定义出来这样你写代码时才能用GPIOA-ODR这种写法。Flash烧录算法*.FLMKeil下载程序时需要通过这个算法文件来擦除和写入Flash。不同芯片的Flash控制器操作时序不同所以算法文件也不能混用。调试配置文件包括SWD/JTAG的调试参数影响你能不能正常连接调试器。注意PACK包不是越新越好也不是随便找一个能用的就行。版本不匹配可能导致寄存器定义错误、时钟配置异常甚至下载后芯片直接跑飞。2.2 CKS32F103C8T6和CS32F1xx_DFP的关系这里是最容易让人懵的地方。你搜“CKS32F103C8T6 PACK包”网上给出的答案五花八门有人让你装ST的包有人让你装GD的包还有人给了一个叫CS32F1xx_DFP的文件。到底哪个是对的实际情况是这样的中科芯的MCU产品线里CKS32F103系列和CS32F103系列在PACK包层面是共用同一个DFP的官方命名就是CS32F1xx_DFP。这个包覆盖了CS32F103、CKS32F103等多个型号安装之后在Keil的Device列表里你既能找到CS32F103C8T6也能找到CKS32F103C8T6。所以如果你按芯片型号去搜PACK包大概率搜不到按CS32F1xx_DFP去搜才能找到正确的东西。我一开始也走了弯路在Keil的Pack Installer里搜CKS32结果什么都没有。后来查了中科芯的官方文档才知道要用CS32F1xx_DFP这个关键词。这个命名逻辑确实不太直观但记住就行了。2.3 安装PACK包的几种方式对比安装PACK包主要有三种途径各有优劣我列个表对比一下安装方式操作难度适用场景注意事项Keil Pack Installer在线安装低网络通畅、官方源可用国产芯片的包往往不在Keil官方源里手动双击.pack文件安装低已下载到本地pack文件需要确保Keil版本兼容手动解压到Pack目录中前两种方式都失败时目录结构不能错否则Keil识别不到对于CKS32F103C8T6来说最靠谱的方式是先从官方或代理渠道拿到CS32F1xx_DFP的.pack文件然后手动安装。在线安装基本不用指望因为Keil的官方Pack仓库里没有中科芯的包。3. 手把手完成PACK包安装与工程配置3.1 获取正确的CS32F1xx_DFP包文件第一步是拿到正确的.pack文件。中科芯的PACK包可以通过以下渠道获取中科芯官网的技术支持页面通常需要注册账号后下载联系你的芯片供应商或代理商索取一些电子工程师社区有网友分享的备份拿到文件后先确认文件名和版本号。典型的文件名类似CS32F1xx_DFP.1.0.0.pack或CS32F1xx_DFP.1.0.2.pack。版本号不同支持的芯片型号和修复的bug也不同。如果你用的是比较新的Keil MDK版本比如5.36以上建议用较新的DFP版本。提示下载后先检查文件大小正常的DFP包一般在几MB到几十MB之间。如果只有几百KB可能是下载不完整或者拿错了文件。3.2 安装PACK包的完整操作步骤拿到.pack文件后安装操作本身不复杂但有几个细节容易出错。方式一双击安装直接双击.pack文件系统会自动调用Keil的Pack Installer来执行安装。这个过程会弹出一个小窗口显示安装进度等进度条走完就表示安装完成。安装成功后打开Keil在Pack Installer的“Installed”列表里应该能看到CS32F1xx_DFP。方式二通过Keil菜单安装打开Keil MDK点击菜单栏的Pack-Install Pack然后浏览到你的.pack文件所在位置选中后点击打开。后续流程和双击安装一样。方式三手动解压安装前两种失败时使用如果双击没反应或者安装过程中报错可以尝试手动解压。操作步骤如下把.pack文件的后缀改成.zip然后用解压软件解压到一个临时文件夹。找到Keil的Pack安装目录通常在C:\Users\你的用户名\AppData\Local\Arm\Packs\下面。注意AppData是隐藏文件夹需要在文件管理器里开启显示隐藏文件。在Packs目录下按照厂商名建立文件夹结构。中科芯的包一般放在\Keil\CS32F1xx_DFP\下面。把解压出来的文件按照原始目录结构复制进去。重启Keil检查Device列表里是否出现了CKS32F103C8T6。手动解压安装的关键是目录结构不能错。PACK包内部的.pdsc文件里定义了厂商名和包名Keil就是按照这个结构去查找的。如果你放错了位置Keil扫描不到器件列表里就不会显示。3.3 在Keil中创建工程并选择芯片PACK包装好之后新建工程的流程和用ST芯片基本一样打开Keil点击Project-New uVision Project选择工程保存路径。在弹出的Device选择窗口中展开CS32F1xx或CKS32F1xx分类找到CKS32F103C8T6选中后点击OK。接下来会弹出Manage Run-Time Environment窗口这里需要勾选CMSIS-CORE和Device-Startup。这两个是必须的前者提供Cortex-M3的内核支持后者提供启动文件。如果你需要用Keil自带的外设驱动库还可以勾选Device-StdPeriph Drivers下面的各个外设模块。不过实际项目中很多人直接用自己写的寄存器操作或者第三方库这一步可以跳过。点击OKKeil会自动把启动文件和系统初始化文件添加到工程里。到这里工程框架就搭好了。你可以新建一个main.c写一个最简单的LED闪烁程序来验证环境是否正常。3.4 关键配置项逐个说明工程建好之后有几个配置项必须检查否则可能出现编译通过但下载失败、或者下载成功但芯片不运行的情况。Debug配置点击Options for Target魔术棒图标进入Debug选项卡。如果你用的是ST-Link调试器在右侧下拉框里选择ST-Link Debugger然后点击旁边的Settings按钮。在Debug设置窗口里确认Port选择的是SWMax Clock不要设得太高一般1MHz到4MHz就够了。太高容易导致连接不稳定。Flash Download配置在Debug设置窗口里切换到Flash Download选项卡。这里需要确认两点一是Programming Algorithm列表里有没有CKS32F103C8T6对应的Flash算法二是算法的起始地址和大小是否正确。CKS32F103C8T6的Flash大小是64KB起始地址0x08000000。如果列表里是空的点击Add按钮从弹出的算法列表里找到CS32F1xx系列对应的Flash算法添加进来。Target配置在Target选项卡里确认Xtal频率设置正确。CKS32F103C8T6通常外接8MHz晶振这里填8.0。这个值影响Keil的仿真时序计算虽然不影响实际硬件运行但仿真调试时如果设错了时序会对不上。C/C配置在C/C选项卡里确认Define框里有没有预定义宏。通常需要定义CS32F103xB或类似的宏具体取决于你用的库。这个宏决定了头文件里包含哪些寄存器定义。如果没定义或者定义错了编译时会报大量未定义符号的错误。4. 那些年我踩过的坑和对应的填坑方法4.1 器件列表里找不到CKS32F103C8T6这是最常见的问题装完PACK包后打开KeilDevice列表里死活找不到目标芯片。可能的原因和排查方法如下原因一PACK包没有真正安装成功。打开Pack Installer在“Installed”列表里搜索CS32F1xx看是否真的存在。如果没有说明安装过程出了问题。可以尝试重新安装或者改用手动解压的方式。原因二PACK包版本太旧不包含CKS32F103C8T6。早期版本的CS32F1xx_DFP可能只支持CS32F103系列后来才加入了CKS32F103的支持。如果你用的是旧版本去获取最新版的DFP包。原因三Keil版本和PACK包不兼容。有些PACK包要求Keil MDK 5.30以上版本如果你的Keil太老可能无法识别。这种情况要么升级Keil要么找旧版本的PACK包。原因四多个版本的PACK包冲突。如果你之前装过其他厂商的F1系列PACK包比如ST的STM32F1xx_DFP可能会和CS32F1xx_DFP产生冲突。解决办法是在Pack Installer里把不相关的F1系列包卸载掉只保留中科芯的。4.2 编译时报错找不到头文件装好PACK包、建好工程后编译时提示cannot open source input file cs32f10x.h或者类似的头文件找不到的错误。这个问题通常出在头文件搜索路径上。Keil在编译时会按照Options for Target-C/C-Include Paths里配置的路径去查找头文件。PACK包安装后头文件通常放在C:\Users\你的用户名\AppData\Local\Arm\Packs\Keil\CS32F1xx_DFP\版本号\Device\Include\下面。你需要把这个路径添加到Include Paths里。具体操作点击Include Paths旁边的...按钮在弹出的窗口里点击新建图标然后浏览到上述路径添加进去。如果你还用了StdPeriph库还需要把库的头文件路径也加进去。实操心得我习惯把PACK包里的Device目录整个拷贝到工程目录下然后用相对路径引用。这样工程拷贝到别的电脑上也不会因为PACK包路径不同而编译失败。4.3 下载程序时提示Flash算法错误编译通过了点击下载按钮Keil提示No Algorithm found for: 08000000H - 0800FFFFH或者类似的Flash算法错误。这说明Flash Download配置里没有添加正确的烧录算法。解决方法是进入Options for Target-Debug-Settings-Flash Download点击Add按钮在算法列表里找到CS32F1xx相关的Flash算法。如果列表里没有说明PACK包里的算法文件没有被正确注册。可以手动浏览到PACK包安装目录下的Flash文件夹找到对应的.FLM文件添加进来。还有一种情况是算法添加了但地址范围不对。CKS32F103C8T6的Flash是64KB地址范围应该是0x08000000到0x0800FFFF。如果算法显示的地址范围不匹配需要手动修改或者换一个正确的算法文件。4.4 程序下载成功但芯片不运行这是最让人头疼的情况Keil提示下载成功但板子上的LED就是不亮或者用调试器连上去发现程序跑飞了。可能的原因比较多我按排查优先级列一下第一检查启动文件是否正确。如果你在建工程时选错了芯片型号Keil可能会添加错误的启动文件。打开工程里的启动文件确认中断向量表的定义和CKS32F103C8T6匹配。CKS32F103C8T6的中断向量表有60个左右的中断入口和STM32F103C8T6基本一致。第二检查系统时钟配置。如果你用的是PACK包自带的system_cs32f10x.c文件确认里面的外部晶振频率宏定义和实际硬件一致。比如SYSCLK_FREQ_72MHz这个宏是否被正确启用。如果晶振频率设错了系统时钟可能跑在一个非预期的频率上导致串口波特率不对、延时函数不准等问题。第三检查BOOT引脚状态。CKS32F103C8T6和STM32一样有BOOT0和BOOT1两个引脚。如果BOOT0拉高芯片会从系统存储器启动而不是从Flash启动。确认BOOT0接地BOOT1任意通常也接地。第四检查复位电路。有些板子的复位电路设计有问题导致芯片一直处于复位状态。用万用表量一下NRST引脚的电压正常应该是高电平3.3V左右。第五检查供电。CKS32F103C8T6的工作电压是2.0V到3.6V典型值3.3V。如果供电不足或者纹波太大芯片可能无法正常工作。用示波器看一下VDD引脚的电压是否稳定。4.5 调试时无法连接目标芯片用ST-Link或J-Link连接芯片时Keil提示Cannot access target或者No target connected。这个问题通常和调试接口配置有关。首先确认调试器的接线是否正确。SWD接口需要连接四根线VCC、GND、SWDIO、SWCLK。有些调试器还需要连接RESET线。检查接线是否牢固有没有虚焊或者接反。其次检查Keil的Debug配置。在Options for Target-Debug-Settings里确认Port选的是SW而不是JTAG。CKS32F103C8T6支持SWD和JTAG两种调试接口但SWD占用的引脚更少更常用。如果还是连不上可以尝试降低SWD时钟频率。在Debug设置里把Max Clock从默认的10MHz降到1MHz甚至更低。有些板子的布线质量不好高频下信号完整性差降低频率可以提高连接成功率。还有一个容易被忽略的点如果芯片里之前烧录的程序把SWD引脚配置成了普通GPIO调试器就连不上了。解决办法是按住复位键点击Keil的下载按钮在松开复位键的瞬间完成连接。或者把BOOT0拉高让芯片从系统存储器启动这样SWD引脚不会被用户程序占用。4.6 常见问题速查表为了方便大家快速定位问题我把上面提到的各种情况整理成一张速查表现象可能原因排查方法解决措施Device列表无CKS32F103C8T6PACK未安装/版本旧/冲突检查Pack Installer已安装列表重装最新版CS32F1xx_DFP编译报头文件找不到Include路径未配置查看报错的具体文件名添加PACK包Include路径下载提示Flash算法错误未添加烧录算法检查Flash Download配置手动添加CS32F1xx算法下载成功但不运行启动文件/时钟/BOOT引脚问题逐项检查硬件和配置更换启动文件、修正时钟宏调试器连不上接线/配置/SWD引脚被占用检查接线和Debug设置降低时钟、按住复位下载程序运行不稳定供电/晶振/复位电路问题示波器测量电源和晶振改善供电、更换晶振5. 几个让效率翻倍的经验技巧5.1 建立自己的PACK包备份库国产芯片的PACK包获取渠道不稳定有时候官网打不开有时候代理给的版本不对。我建议每次拿到一个能正常工作的PACK包后立刻备份到自己的网盘或者本地硬盘里并且标注好版本号和适用的Keil版本。这样下次换电脑或者帮同事装环境时直接用自己的备份就行不用再去网上到处找。备份的时候建议把.pack文件和安装后的目录一起备份。因为有些PACK包在安装过程中会修改Keil的配置文件单纯备份.pack文件可能不够。把AppData\Local\Arm\Packs\Keil\CS32F1xx_DFP\整个目录打包备份恢复的时候直接解压到对应位置最省事。5.2 用工程模板减少重复配置每次新建工程都要选芯片、勾选Run-Time Environment、配置Include路径、添加Flash算法这些操作重复且容易出错。我的做法是建一个“空白模板工程”把所有这些配置都做好然后把这个工程文件夹设为只读。以后每次开新项目直接复制这个模板文件夹改个名字就能用。模板工程里可以预先放好main.c的框架、常用的头文件包含、LED闪烁的测试代码。这样新建工程后编译下载就能直接验证环境是否正常不用再从头写测试代码。5.3 版本管理要跟上PACK包的版本更新可能会修复一些bug但也可能引入新的问题。我遇到过升级DFP后原本正常的工程编译报错的情况。所以建议在工程目录下放一个说明文件记录当前使用的PACK包版本号、Keil版本号、调试器型号。这样以后出问题时可以快速回溯到之前能工作的配置。如果团队协作开发最好统一PACK包版本。可以在团队内部共享一个PACK包安装目录大家都从这个目录安装避免因为版本不一致导致编译结果不同。5.4 善用Keil的Pack Installer离线模式Keil的Pack Installer默认会联网检查更新但在网络环境不好的时候这个检查过程会很慢甚至卡死。可以在Pack Installer的设置里关闭自动更新检查改成手动模式。这样打开Pack Installer时不会卡顿需要更新时再手动点击检查。另外Pack Installer支持导入离线的.pack文件。在菜单里选择File-Import然后选择本地的.pack文件即可。这个功能在批量部署开发环境时特别有用可以写一个脚本自动导入多个PACK包。5.5 关于Keil注册和版本选择的个人建议网上有很多关于Keil注册的讨论这里我不展开说具体方法只从技术角度给个建议如果你用的是正版Keil建议保持较新的版本比如MDK 5.36或5.38这些版本对CMSIS-Pack的支持更完善安装国产PACK包时兼容性更好。如果因为某些原因只能用旧版本那就要注意PACK包的版本不能太新否则可能不兼容。另外Keil MDK有社区版和商业版之分。社区版对代码大小有限制但用于学习和小型项目足够了。商业版没有限制但需要授权。根据自己的实际情况选择合适的版本就行。5.6 调试时查看结构体变量的小技巧在用Keil调试CKS32F103C8T6时很多人不知道怎么在Watch窗口里查看结构体变量的各个成员。其实操作很简单在Watch窗口里输入结构体变量名然后展开左边的加号就能看到所有成员的值。如果加号点不开可能是编译器优化把结构体优化掉了可以在Options for Target-C/C里把优化等级调到Level 0重新编译后再调试。还有一个技巧是在Watch窗口里直接输入结构体成员的表达式比如myStruct.member1这样即使结构体没有展开也能看到具体成员的值。对于指针类型的结构体可以用(*ptr).member或者ptr-member的形式来查看。6. 从STM32迁移到CKS32F103C8T6的注意事项6.1 寄存器层面的兼容性分析CKS32F103C8T6标称是STM32F103C8T6的Pin-to-Pin替代引脚定义和封装完全一致但在寄存器层面并不是100%兼容。大部分外设的寄存器地址和位定义是一样的但有几个地方需要特别注意Flash控制器擦除和编程的时序参数可能不同。如果你用ST的Flash算法去烧录CKS32的芯片可能会失败或者不稳定。必须用CS32F1xx_DFP里自带的Flash算法。时钟系统PLL的锁定时间和STM32可能有细微差异。如果你的程序对启动时间有严格要求需要实测一下。ADC校准CKS32的ADC校准流程和STM32基本一致但校准结果的精度可能有差异。对精度要求高的场合需要重新校准。低功耗模式待机电流和唤醒时间可能不同。如果项目对功耗敏感需要实测验证。6.2 代码迁移的实操步骤如果你已经有一个基于STM32F103C8T6的工程想迁移到CKS32F103C8T6可以按以下步骤操作备份原工程防止迁移失败后无法回退。在Keil里把Device从STM32F103C8T6改成CKS32F103C8T6。把启动文件从startup_stm32f10x_md.s替换成CS32F1xx_DFP里的启动文件。把系统初始化文件从system_stm32f10x.c替换成system_cs32f10x.c。检查头文件包含把stm32f10x.h替换成cs32f10x.h。如果代码里直接引用了ST的库函数需要把库文件也替换成中科芯提供的版本。重新配置Flash Download算法选择CS32F1xx对应的算法。编译工程解决报错。常见的报错包括未定义符号、寄存器名称不匹配等根据报错信息逐个修正。下载程序到CKS32F103C8T6板子上验证功能是否正常。注意迁移过程中不要一次性改太多东西建议先让一个最简单的LED闪烁程序跑起来确认基础环境没问题后再逐步迁移复杂功能。6.3 外设驱动的适配要点STM32的标准外设库StdPeriph Library和中科芯提供的库在API层面高度相似大部分函数名和参数都一样。但有几个地方需要留意GPIO初始化结构体成员名称和顺序可能略有不同需要对照头文件确认。中断向量表CKS32F103C8T6的中断向量表在STM32的基础上可能有增减需要对照启动文件确认。时钟使能函数外设时钟使能的宏定义可能不同比如RCC_APB2Periph_GPIOA在CS32的库里可能叫别的名字。最稳妥的办法是直接看CS32F1xx_DFP里提供的例程把例程里的外设初始化代码复制到你的工程里然后根据实际需求修改参数。这样比对着STM32的代码改要快得多也不容易出错。7. 关于PACK包安装的一些延伸思考7.1 国产芯片生态的现状从CKS32F103C8T6这个PACK包的安装过程其实能看出国产芯片生态的一个缩影。芯片本身的硬件设计已经做得不错了Pin-to-Pin兼容、外设寄存器兼容但在软件工具链的支持上还有提升空间。PACK包的命名不规范、获取渠道不透明、版本管理不清晰这些问题都会增加开发者的学习成本。不过情况在慢慢变好。越来越多的国产芯片厂商开始重视工具链建设PACK包的发布也越来越规范。作为开发者我们能做的就是把自己踩过的坑记录下来分享出去让后来的人少走弯路。7.2 多平台开发的趋势现在很多项目不再局限于Keil一个平台IAR、GCC、甚至一些新兴的IDE都在被使用。CKS32F103C8T6的PACK包目前主要是为Keil准备的如果你用IAR或者GCC需要找对应的器件支持文件。IAR有自己的器件描述文件格式GCC则需要自己配置链接脚本和启动文件。我个人的建议是如果你的项目没有特别强的平台绑定需求可以优先考虑用GCC Makefile的方式来组织工程。这样跨平台迁移的成本最低也不依赖特定IDE的PACK包机制。当然Keil在调试体验上确实有优势具体怎么选还是要看项目需求和团队习惯。7.3 从PACK包看芯片选型如果你正在选型准备用CKS32F103C8T6替换STM32F103C8T6除了关注价格和供货建议把PACK包的成熟度也纳入考量。一个维护良好的PACK包意味着厂商在软件支持上投入了资源后续遇到问题时更容易得到技术支持。可以在选型阶段就去厂商官网看看PACK包的更新频率、版本历史、有没有详细的Release Note。这些信息能侧面反映厂商对生态建设的重视程度。8. 最后分享几个实操中总结的小技巧第一个技巧是关于PACK包安装失败的应急处理。如果你试了各种方法都装不上可以试试把Keil完全卸载包括删除AppData\Local\Arm\Packs目录下的所有内容然后重新安装Keil和PACK包。有时候是之前的安装残留导致冲突彻底清理后就能正常安装。第二个技巧是关于工程编译速度的。CKS32F103C8T6的工程如果包含了完整的StdPeriph库编译一次可能要几十秒。可以在Options for Target-C/C里开启One ELF Section per Function这样链接器可以丢弃未使用的函数减小代码体积也能稍微加快编译速度。另外把不用的外设库文件从工程里移除也能明显提升编译速度。第三个技巧是关于调试信息输出的。CKS32F103C8T6没有内置的ITM调试功能不能用SWD接口直接输出printf信息。但可以用串口来输出调试信息只需要把USART的TX引脚接到USB转串口模块上然后在代码里重定向printf函数到USART即可。这个技巧在排查运行时问题时非常有用。第四个技巧是关于Flash保护的。如果你的产品需要防止代码被读取可以在下载程序时开启Flash读保护。在Keil的Flash Download配置里有一个Security选项勾选后下载的程序会自动开启读保护。不过要注意开启读保护后如果想重新烧录需要先执行全片擦除否则连不上调试器。这些经验都是我在实际项目中一点点积累的有些是踩了坑之后才明白的有些是跟同行交流时学到的。PACK包安装这件事看起来简单但细节很多希望这篇内容能帮你少走一些弯路。如果你在安装过程中遇到了这里没提到的问题欢迎一起交流探讨。
返回列表