完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
建立文件列表 添加相关文件 配置文件 Target: 第1处:晶振频率。 这个值主要用于仿真调试用,一般我们使用硬件调试可以不用管这个值。 第2处:操作系统。 很好理解,是否选择Keil自带的RTX操作系统,一般我们都不选。 第3处:系统预览文件。 这里我们一般是默认使用系统自带,不选择自己定义的。 第4处:使用交叉模块优化、使用微库。 交叉模块一般我们不使用,微库这个功能常用与printf函数。 第5处:ROM存储地址。 这里的ROM存储指的是程序储存的地址,分片外和片内两种。 程序存储在片内好理解(初学者一般下载程序都是下载到片内FLASH),片外存储程序对于初学者来说比较少见,一般都是项目做大了,或有特殊要求时,片内不够使用了才将程序存储在片外。常见使用片外的例子“外部NorFlash存储程序代码”就会用到片外的存储地址。 Read/Only MemoryAreas:填写的是程序的存放地址。起始地址:0x800,0000,这款芯片的flash大小为512K,也就是有0x80000个地址空间。 Read/Write Memory/Areas: 填写的是程序运行起来的内存空间。 起始地址:0x2000,0000,大小为64K,也就是0x1000个地址空间。 Flash和Sram的大小是从器件手册上查见的 OUTPUT: 第1处:输出路径、宽高。 选择列表文件输出的文件夹。可设置文件页面的宽度,长宽。 第2处:输出汇编列表。 勾选上会输出汇编列表信息(产生后缀为 .lst的文件)。如果工程中没汇编文件,则不会输出信息。 第3处:C编译列表。 C编译程序列表选项,勾选上可生成.txt, .i文件。 第4处:链接列表。 可选择生成或禁止生成.map文件。可设置生成代码的详细信息。可选择性的选取输出MAP文件。 C/C++ 第1处:预处理(Preprocessor Symbols) 这里主要就是预定义功能,相当于在程序中的#define xxxx。 我上面预定义STM32F10X_HD,在stm32f10x.h文件中就不用定义了。 第2处:语言代码生成(Language / Code Generation) Language/code Generation语言代码生成,可以理解成编译、链接到最后生成代码。这部分功能对于代码优化比较重要,初学者可以不用过多理解,对代码大小、运行速度等性能要求较高的人就需要深入理解 Optimization:优化选择项,有Level0 - Level3四个选项。 【设置编译器命令行:-Onum】 初学者、在线调试建议使用Level0,也就是不优化,这样执行的效果才和代码一样。如果配置成Level3,在线调试可能有些地方优化而不能打断点。 Optimize for Time:优化时间,即优化代码中费时的地方。 【设置编译器命令行:-Otime】 --split_sections 比如有些算法,本身代码量就比较大,运行需要很长时间(假如需要2秒),这个时候勾选上该功能,会发现运行时间有比较明显的减少(或许不到1秒时间)。 Split Load and Store Multiple:加载和存储多个分裂。 【设置编译器命令行:–split_ldm】 非对齐数据采用多次访问方式。当 LMD/STM 指令有 4 个以上产生时,列分裂LMD 和 STM 指令,以减不中断延迟。 One ELF Section per Function:优化每一个函数 ELF 段(建议都勾选上)。 【设置编译器命令行:–split_sections】 每个函数都会产生一个 ELF 段,勾选上,允许优化每一个 ELF 段。这个选项可以减少潜在的共享地址、数据和函数之间的字符串。 直白的意思:可以减少代码量ROM的大小(内存RAM不会减小)。 举一个例子,勾选之前和勾选之后,编译后存储大小对比: 勾选之前: Program Size: Code=2540 RO-data=336 RW-data=40 ZI-data=1024 勾选之后: Program Size: Code=908 RO-data=320 RW-data=40 ZI-data=1024 Strict ANSI C:标准(严格)的ANSC。 【设置编译器命令行:–strict】 也就是说:编译时严格按照标准的ANSI C进行检查。 Enum Container always int:枚举总是int型 【设置编译器命令行:–enum_is_int】 很容易理解,我们枚举时成员变量类型为int型。 Plain Char is Signed:纯字符标记为字符。 【设置编译器命令行:–signed_chars】 代码举例:char a[] = “abcd”; 也就是说将“abcd”标记为字符型。 Read-Only Position Independent:为常量生成独立的代码空间。 【设置编译器命令行:–apcs=/ropi】 比如:我们定义字库变量为常量,勾选该选项,会将这些字库变量放在独立的代码空间。 Read-Write Position Independent:为可读写代码生成独立的代码空间。 【设置编译器命令行:–apcs=/rwpi】 Warnings:警告 【No Warnings设置编译器命令行:-W】 No Warnings:不会有警告提示和输出; All Warnings:所有警告提示和输出。 Thumb Mode:Thumb模式。 指定设置文件或文件夹(组)为Thumb模式。 【注意:在工程中该模式为默认,也就是不能选择】 No Auto Includes:不自动添加头文件(一般不勾选)。 不勾选该选项,编译器就会在Keil安装路径寻找你工程中.h文件。 举例:我们定义uint8_t是定义在stdint.h文件里面的,但是我们工程目录下一般是没有stdint.h文件。这时候,编译器就会在Keil路径下去寻找stdint.h文件。 C99 Mode:C99标准模式。 【设置编译器命令行:–c99】 C语音有标准有多个版本,如C89、C90、C99等。 第3处:包含路径(Include Paths) 包含路径是使用Keil(及类似)软件必须掌握的一项。包含路径就是指定我们工程中使用文件所在的位置,让编译器找到相应的文件。是初学者、高级软件工程师都必须掌握的一项。 第4处:多功能控件(Misc Controls) 指定没有单独的对话框控件。例如:错误消息用日本语言来显示消息。【不常用】 第5处:编译器控制字符串(Compiler control string) 这里是针对编译器执行的命名,显示当前在编译器命令行指令。 在上面“第2处:语言代码生成”中有一个中括号【设置编译器命令行:】 里面的命名就显示在这里。 ASM 第1处:有条件的装配控制符号(Conditional Assembly Control Symbols) 指定汇编条件,这里类似上一章节C/C++选项中的预处理。 第2处:语言代码生成(Language / Code Generation) Read-Only Position Independent:为常量生成独立的代码空间。 Read-Write Position Independent:为可读写代码生成独立的代码空间。 Thumb Mode:Thumb模式。 Split Load and Store Multiple:加载和存储多个分裂。 Execute only Code:只生成执行代码; No Auto Includes:不自动添加头文件(一般不勾选)。 第3、4处同上 Debug(调试) 第1处:选择硬件在线调试 下载调试器的选择不用多说,主要说一下后面“Setting”。 很多人常用J-Link下载调试器,而调试STM32时,可以使用四线SWD模式。如果使用J-Link进行SWD调试。 这个时候就需要在“Setting”里面选择“SW”模式,如下如: 第2处:选择硬件在线调试 Load Application at Startup:启动时加载应用程序。 Run to main():程序执行到main()函数。 进入调试模式时,程序自动运行到main函数处。 Initialization File:加载、编辑初始化文件。 第3处:复位调试会话设置(Restore Debug Session Settings) 这里复位设置就是恢复设置的意思,如果勾选上,点击一下“复位”就会恢复到之前的状态。包括:断点Breakpoints、 窗口Watch Windows、性能分析器 Performance Analyzer、内存窗口Memory Window、工具箱Toolbox、系统查阅器System Viewer等。 第4处:DLL文件(最好默认) 这里的配置属于Keil自身的配置,最好不要修改。 CPU/Driver DLL - Parameter:CPU驱动文件和参数。 Dialog DLL - Parameter:会话框DLL文件和参数。 Utilities(功能) 第1处:配置FLASH菜单命名(Configure Flash Menu Command) 这里是二选一选项,一般我们使用上面的“Update Target Driver for Flash Programming”。 Use Debug Driver:使用调试驱动。 Update Target Before Debugging:调试之前更新目标。 一般都勾选上,因为我们下载程序之前检测到代码修改了,就会重新编译程序(也就是更新目标) Setting:设置。 很多人下载程序之后,需要复位一下程序才运行,原因在于没有勾选“Reset and Run”,如下图: 再有这里需要注意,选择好自己属于自己的芯片。 我的是STM32F103RC,根据命名规则可知 Flash大小 256K,如果不是还需 add |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1816 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
739 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1691 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
754浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
585浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 07:36 , Processed in 0.812434 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号
|