打开一个工程文件,可以看到如下的界面:
下面我们就一一来介绍下。为了讲解专门找到一个keil汉化补丁。也是够够的了。这里的汉化为了方便讲解,实际工作中建议还是用英文版本。
下载:keil4汉化包
其中需要注意的是LicenseManagement,破解时需要在这里输入。
2、工具栏
文件操作
新建文件夹Ctrl+N
打开文件Ctrl+O
保存当前文件Ctrl+S
保存所有文件无
剪切Ctrl+X
复制Ctrl+C
粘贴Ctrl+V
撤销编辑Ctrl+Z
恢复编辑Ctrl+Y
跳转到上一步Ctrl+-
跳转到下一步Ctrl+Shift+-
添加书签Ctrl+F2
跳转到上一个书签Shift+F2
跳转到下一个书签F2
清空所有书签Ctrl+Shift+F2
插入缩进(Tab)Tab取消缩进(Tab)Shift+Tab确定注释无取消注释无
查找所有文本Ctrl+Shift+F查找文本输入框无查找单个文本Ctrl+F增加搜索Ctrl+I
打开/关闭调试Ctrl+F5
插入断点F9
失能单个断点Ctrl+F9
失能所有断点无
取消所有断点Ctrl+Shift+F9
窗口无配置无
有时会遇到,复制到keil编辑器中的汉字出现乱码。解决方法:configuration选项对话框中将ENCODING框中设置成ChineseGB2312
编译当前文件(单个)Ctrl+F7
编译目标文件(修改过的)F7
编译所有目标文件(重新编译)无
编译多个工程文件(多工程)无
停止编译无
下载软件F8
工程目标选择框无工程目标选项(配置)Alt+F7
单工程管理无多工程管理无管理运行时环境无选择软件包无安装软件支持包无
如下的界面,我们来逐一介绍一下各个选项。
选择你所使用的芯片类型
第1处:晶振频率。
这个值主要用于仿真调试用,一般我们使用硬件调试可以不用管这个值。
第2处:操作系统。
很好理解,是否选择Keil自带的RTX操作系统,一般我们都不选。
第3处:系统预览文件。
这里我们一般是默认使用系统自带,不选择自己定义的。
第4处:使用交叉模块优化、使用微库。
交叉模块一般我们不使用,微库这个功能常用与printf函数。
第5处:ROM存储地址。
这里的ROM存储指的是程序储存的地址,分片外和片内两种。
程序存储在片内好理解(初学者一般下载程序都是下载到片内FLASH),片外存储程序对于初学者来说比较少见,一般都是项目做大了,或有特殊要求时,片内不够使用了才将程序存储在片外。常见使用片外的例子“外部NorFlash存储程序代码”就会用到片外的存储地址。
Read/OnlyMemoryAreas:填写的是程序的存放地址。起始地址:0x800,0000,这款芯片的flash大小为512K,也就是有0x80000个地址空间。
Read/WriteMemory/Areas:填写的是程序运行起来的内存空间。
起始地址:0x2000,0000,大小为64K,也就是0x1000个地址空间。
Flash和Sram的大小是从器件手册上查见的。
第6处:RAM存储地址。RAM存储地址和ROM道理一样,可以分片内和片外。常见例子“外部SRAM作为运行内存”。
第1处:输出路径。
输出路径就是在工程编译的过程中,输出这些文件保存的文件夹。KeilV5一般默认是保存在Objects文件夹下面,我建立工程一般也使用这个默认的路径。【其内容可以全部删除,最好配置在单独一个文件夹下面,代码备份时方便删除】
第2处:输出可执行文件名。
输出的可执行文件和库的名称就是在这里定义。比如我们常见输出Hex文件,其名称就是这里定义的。
第3处:输出可执行文件(重点)。
第4处:输出库。
拓展一点:这里输出(生成)的是静态库,并非动态库。初学者可以不用去理解。
第1处:输出路径、宽高。
选择列表文件输出的文件夹。可设置文件页面的宽度,长宽。
第2处:输出汇编列表。
勾选上会输出汇编列表信息(产生后缀为.lst的文件)。如果工程中没汇编文件,则不会输出信息。
第3处:C编译列表。
C编译程序列表选项,勾选上可生成.txt,.i文件。
第4处:链接列表。
可选择生成或禁止生成.map文件。可设置生成代码的详细信息。可选择性的选取输出MAP文件。
第1处:编辑之前运行用户程序。
第2处:编译之前运行用户程序。
第3处:编译之后运行用户程序。
如果想生成*.bin格式的文件:
选中Run#1,在后边的文本框中输入fromelf.exe–bin-o./bin/test.bin./test.axf
第4处:编译之后执行条件。
BeepWhenComplete:编译完成发出声音;
StartDebugging:启动调试程序。
第1处:预处理(PreprocessorSymbols)
这里主要就是预定义功能,相当于在程序中的#definexxxx。
第2处:语言代码生成(Language/CodeGeneration)
Language/codeGeneration语言代码生成,可以理解成编译、链接到最后生成代码。这部分功能对于代码优化比较重要,初学者可以不用过多理解,对代码大小、运行速度等性能要求较高的人就需要深入理解
Optimization:优化选择项,有Level0-Level3四个选项。
【设置编译器命令行:-Onum】
初学者、在线调试建议使用Level0,也就是不优化,这样执行的效果才和代码一样。如果配置成Level3,在线调试可能有些地方优化而不能打断点。
【设置编译器命令行:-Otime】--split_sections
SplitLoadandStoreMultiple:加载和存储多个分裂。
【设置编译器命令行:–split_ldm】
非对齐数据采用多次访问方式。当LMD/STM指令有4个以上产生时,列分裂LMD和STM指令,以减不中断延迟。
OneELFSectionperFunction:优化每一个函数ELF段(建议都勾选上)。
【设置编译器命令行:–split_sections】
每个函数都会产生一个ELF段,勾选上,允许优化每一个ELF段。这个选项可以减少潜在的共享地址、数据和函数之间的字符串。
直白的意思:可以减少代码量ROM的大小(内存RAM不会减小)。
举一个例子,勾选之前和勾选之后,编译后存储大小对比:
勾选之前:
ProgramSize:Code=2540RO-data=336RW-data=40ZI-data=1024
勾选之后:
ProgramSize:Code=908RO-data=320RW-data=40ZI-data=1024
StrictANSIC:标准(严格)的ANSC。
【设置编译器命令行:–strict】
也就是说:编译时严格按照标准的ANSIC进行检查。
EnumContaineralwaysint:枚举总是int型
【设置编译器命令行:–enum_is_int】
很容易理解,我们枚举时成员变量类型为int型。
PlainCharisSigned:纯字符标记为字符。
【设置编译器命令行:–signed_chars】
代码举例:chara[]=“abcd”;也就是说将“abcd”标记为字符型。
Read-OnlyPositionIndependent:为常量生成独立的代码空间。
【设置编译器命令行:–apcs=/ropi】
比如:我们定义字库变量为常量,勾选该选项,会将这些字库变量放在独立的代码空间。
Read-WritePositionIndependent:为可读写代码生成独立的代码空间。
【设置编译器命令行:–apcs=/rwpi】
Warnings:警告
【NoWarnings设置编译器命令行:-W】
NoWarnings:不会有警告提示和输出;
AllWarnings:所有警告提示和输出。
ThumbMode:Thumb模式。
指定设置文件或文件夹(组)为Thumb模式。
【注意:在工程中该模式为默认,也就是不能选择】
NoAutoIncludes:不自动添加头文件(一般不勾选)。
不勾选该选项,编译器就会在Keil安装路径寻找你工程中.h文件。
举例:我们定义uint8_t是定义在stdint.h文件里面的,但是我们工程目录下一般是没有stdint.h文件。这时候,编译器就会在Keil路径下去寻找stdint.h文件。
C99Mode:C99标准模式。
【设置编译器命令行:–c99】
C语音有标准有多个版本,如C89、C90、C99等。
第3处:包含路径(IncludePaths)
包含路径是使用Keil(及类似)软件必须掌握的一项。包含路径就是指定我们工程中使用文件所在的位置,让编译器找到相应的文件。是初学者、高级软件工程师都必须掌握的一项。
第4处:多功能控件(MiscControls)
指定没有单独的对话框控件。例如:错误消息用日本语言来显示消息。【不常用】
第5处:编译器控制字符串(Compilercontrolstring)
这里是针对编译器执行的命名,显示当前在编译器命令行指令。
在上面“第2处:语言代码生成”中有一个中括号【设置编译器命令行:】
里面的命名就显示在这里。
第1处:有条件的装配控制符号(ConditionalAssemblyControlSymbols)
指定汇编条件,这里类似上一章节C/C++选项中的预处理。
ExecuteonlyCode:只生成执行代码;
第3、4处同上
第1处:使用分散文件加载对话框Target页面(UseMemoryLayoutfromTargetDialog)
MakeRWSectionsPositionIndependent:使RW段独立。
【设置编译器命令行:–rwpi】
启用时:变量区域(包含RW和ZI)具有独立地址。
禁用时:变量区域(包含RW和ZI)位于绝对的内存地址。
MakeROSectionsPositionIndependent:使RO段独立。
【设置编译器命令行:–ropi】
启用时:常量和代码区域(RO)具有独立地址。
禁用时:常量和代码区域(RO)位于绝对的内存地址。
Don’tSearchStandardLibraries:不搜索标准库。
【设置编译器命令行:–noscanlib】
禁用默认编译器运行时库的扫描。
Report‘mightfail’ConditionsasErrors:报告’mightfail’条件认为是错误。
报告的条件可能导致失败的错误,而不是警告。
X/OBase:X/O基地址。
【设置编译器命令行:–xo_base=address】
R/OBase:R/O基地址。
【设置编译器命令行:–ro_base=address】
R/WBase:R/W基地址。
【设置编译器命令行:–rw_base=address】
disableWarnings:警用警告。
【设置编译器命令行:–diag_suppress】
第2处:分散文件(ScatterFile)
这里可以加载、查看和编辑分散文件。点击后面就的三点“…”可以加载文件;点击“Edit…”查看和编辑对应的文件。
第1处:选择硬件在线调试下载调试器的选择不用多说,主要说一下后面“Setting”。
很多人常用J-Link下载调试器,而调试STM32时,可以使用四线SWD模式。如果使用J-Link进行SWD调试。这个时候就需要在“Setting”里面选择“SW”模式,如下如:
第2处:选择硬件在线调试
LoadApplicationatStartup:启动时加载应用程序。
Runtomain():程序执行到main()函数。
进入调试模式时,程序自动运行到main函数处。
InitializationFile:加载、编辑初始化文件。
第3处:复位调试会话设置(RestoreDebugSessionSettings)
这里复位设置就是恢复设置的意思,如果勾选上,点击一下“复位”就会恢复到之前的状态。包括:断点Breakpoints、窗口WatchWindows、性能分析器PerformanceAnalyzer、内存窗口MemoryWindow、工具箱Toolbox、系统查阅器SystemViewer等。
第4处:DLL文件(最好默认)
这里的配置属于Keil自身的配置,最好不要修改。
CPU/DriverDLL-Parameter:CPU驱动文件和参数。
DialogDLL-Parameter:会话框DLL文件和参数。
第1处:配置FLASH菜单命名(ConfigureFlashMenuCommand)
这里是二选一选项,一般我们使用上面的“UpdateTargetDriverforFlashProgramming”。
UseDebugDriver:使用调试驱动。
UpdateTargetBeforeDebugging:调试之前更新目标。
一般都勾选上,因为我们下载程序之前检测到代码修改了,就会重新编译程序(也就是更新目标)
Setting:设置。
很多人下载程序之后,需要复位一下程序才运行,原因在于没有勾选“ResetandRun”,如下图:
第2处:配置图像文件的处理(ConfigureImageFileProcessing)这个选项我们不常用,感兴趣的朋友可以自行了解一下。
上面这是提了一下,,复制到keil编辑器中的汉字出现乱码。接下来,详细看一下Configuration这里面,我能想到的地方:TAB首行缩进的、更改字体,其他默认。所以接下来我们只看一个Editor就好了。
第1处:GeneralEditorSettings
也就是换行时自动缩进(对齐)功能,提供3个选项。
None:不对对齐,光标每次换行在第一列。
Smart:灵活对齐(常用)。包含大括号自动对齐。
Block:光标对齐于前一行。
VirtualSpaces:虚拟空间。
光标在上下移动时不管有没有“空间”都对齐。也就是说光标可以在任何位置。
ViewWhiteSpace:显示空白(空格)。
也就是显示一个点为空格。
ViewEndofLine:显示结束行。
也就是在行结束位置显示换行符
第5处:C/C++&ASM&OtherFile
Usesyntaxcoloring:使用语法颜色。不使用语法就等于txt文本那种纯黑色
Insertspacesfortabs:符插入空格。
TabSize:Tab符大小。一个Tab符占几个空格。
ShowLineNumbers:显示行数。
UsemonospacedFont:使用等宽字体。
OpenwithOutlining:打开伦廓。
调试之前先要编译
编译当前文件(单个)Ctrl+F7编译目标文件(修改过的)F7编译所有目标文件(重新编译)无编译多个工程文件(多工程)无停止编译无下载软件F8
打开调试
打开/关闭调试Ctrl+F5插入断点F9失能单个断点Ctrl+F9失能所有断点无取消所有断点Ctrl+Shift+F9
打开调试,出现了调试工具栏
复位:让程序复位到起点,调试设置恢复到初始状态。
全速运行(F5):可以让程序运行常看运行状态,也可以在特定位置打断点,让程序运行到特定位置,查看运行状态。
停止运行:程序全速运行时(有效),点击该按钮可让程序停止运行。
这些操作,与打断点和全速运行(F5)结合着使用。
单步调试(F11)也就是每点一次按钮,程序运行一步,遇到函数会跳进函数**执行。
逐行调试(F10)也就是每点一次按钮,程序运行一行,遇到函数跳过函数**执行。
运行到光标处(Ctrl+F10)即将光标放在某一行,点击该按钮(或Ctrl+F11),程序执行到光标的位置就会停止下来(前提是程序能执行到光标的位置)。
这个功能在程序停止运行时有效,主要的作用就是我们打开了很多文件,不知道将程序翻到哪里去了,点击改按钮即可知道我们的程序暂停在那个位置。
有两种方式打开
这里只介绍几个常用的。
常用于查看变量的窗口
查看该存储器地址的值得变化
查看外设寄存器数值的窗口
9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。
加利福尼亚州圣克拉拉县2024年8月30日/美通社/--数字化转型技术解决方案公司Trianz今天宣布,该公司与AmazonWebServices(AWS)签订了...
伦敦2024年8月29日/美通社/--英国汽车技术公司SODA.Auto推出其旗舰产品SODAV,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。SODAV工具的开发耗时1.5...
北京2024年8月28日/美通社/--越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...
8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。
8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。
8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。
要点:有效应对环境变化,经营业绩稳中有升落实提质增效举措,毛利润率延续升势战略布局成效显著,战新业务引领增长以科技创新为引领,提升企业核心竞争力坚持高质量发展策略,塑强核心竞争优势...
北京2024年8月27日/美通社/--8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。活动现场NVI技术创新联...
北京2024年8月27日/美通社/--在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...
山海路引岚悦新程三亚2024年8月27日/美通社/--近日,海南地区六家凯悦系酒店与中国高端新能源车企岚图汽车(VOYAH)正式达成战略合作协议。这一合作标志着两大品牌在高端出行体验和环保理念上的深度融合,将...
上海2024年8月28日/美通社/--8月26日至8月28日,AHNLAN安岚与股神巴菲特的孙女妮可巴菲特共同开启了一场自然和艺术的疗愈之旅。妮可·巴菲特在疗愈之旅活动现场合影...
8月29日消息,近日,华为董事、质量流程IT总裁陶景文在中国国际大数据产业博览会开幕式上表示,中国科技企业不应怕美国对其封锁。
上海2024年8月26日/美通社/--近日,全球领先的消费者研究与零售监测公司尼尔森IQ(NielsenIQ)迎来进入中国市场四十周年的重要里程碑,正式翻开在华发展新篇章。自改革开放以来,中国市场不断展现出前所未有...
上海2024年8月26日/美通社/--今日,高端全合成润滑油品牌美孚1号携手品牌体验官周冠宇,开启全新旅程,助力广大车主通过驾驶去探索更广阔的世界。在全新发布的品牌视频中,周冠宇及不同背景的消费者表达了对驾驶的热爱...
此次发布标志着Cision首次为亚太市场量身定制全方位的媒体监测服务。芝加哥2024年8月27日/美通社/--消费者和媒体情报、互动及传播解决方案的全球领导者Cis...
上海2024年8月27日/美通社/--近来,具有强大学习、理解和多模态处理能力的大模型迅猛发展,正在给人类的生产、生活带来革命性的变化。在这一变革浪潮中,物联网成为了大模型技术发挥作用的重要阵地。作为全球领先的...
北京2024年8月27日/美通社/--高途教育科技公司(纽约证券交易所股票代码:GOTU)("高途"或"公司"),一家技术驱动的在线直播大班培训机构,今日发布截至2024年6月30日第二季度未经审计财务报告。2...
8月26日消息,华为公司最近正式启动了“华为AI百校计划”,向国内高校提供基于昇腾云服务的AI计算资源。