26.2.6 ZD-EP9 [Keil环境配置/sfr文件问题] 对Keil集成开发环境的初步认识
首先总结一点,Keil对新手太不友好了。
很多配置环境过程中遇到的问题要去网上不断找教程,过程十分痛苦。
还很容易崩溃。。
配置大致流程
下面还是来回顾一下上手一个单片机(我还记得)的大致流程吧:
· 查阅官方芯片数据手册
· 在Keil中安装芯片对应的器械支持包*
· 在项目中配置好开发环境(如仿真器配置、优化程度选择)
· 进行项目开发
这其中最烦的就是开发环境的配置了。
简记一下仿真器配置:

· 首先在Debug界面右侧(硬件调试方法,左侧为软件调试方法)选择对应的仿真器(或称下载器,目前使用的是更专用的ST-Link下载器,后续可能会用到更通用的DAP仿真器),并勾选下方Run to main()选项

· 进入setting界面,默认无需进行更多修改

· 值得注意的是,在仿真器的Trace(时间调试相关设置)界面需要将Core Clock(芯片频率)设置成对应芯片的最大频率(根据需要适时调整,最大频率F1系列72MHz,F4系列168MHz),可在Keil界面的File - Devices Datebase界面中查询

· 在闪存下载界面要讲Reset and Run选项勾选,另外左侧是下载前对芯片进行的操作(从上到下分别为擦除全片,擦除分区,不进行擦除)

· 在项目设置的Utilities界面勾选Use Debug Driver选项

· 此外,要在C/C++选项卡对代码优化程度进行选择,最好使用-O0(及Level0),避免在watch窗口中出现<not in scope>(不在范围中)提示
遇到的问题
首先是退出调试界面保存问题:
原因:Keil开发环境对中文不友好,路径中中文过多会导致程序崩溃
解决方法:减少路径长度,减少中文数量(10以内),在退出调试前清空断点
其次一个重头戏就是前文的*内容,Keil内置的Pack Installer在更新后不会解压器械包SVD(system viewer description)文件中的.sfr文件,导致Keil无法读取外设寄存器的数据(到底是什么脑回路??)
解决方法是通过内置的svdconv.exe程序对.svd文件进行解压,得到.sfr文件,具体操作方法见原贴链接:keil无法查看外设寄存器(生成SFR文件)
这里给出使用到的终端代码:SVDConv ARM_Sample.svd --generate=sfr
长路漫漫。。