dffzh 发表于 2025-7-16 14:24

【每周分享】Keil编译生成hex文件和bin文件的方法

如何通过Keil编译生成可执行文件,即hex文件和bin文件,本文给大家介绍一下。1、生成hex文件通过以下界面的配置操作就可以生成hex文件:可以自定义存放路径和文件名称等,其中文件名称支持中文。
2、生成bin文件通过以下界面的配置操作就可以生成bin文件:生成的bin文件名称与生成的hex文件名称一致:这里需要对该界面的配置做一些解释:Before Compile C/C++ File: 编译c文件之前;Before Build:编译之前;After Build/Rebuild:编译之后运行,然后生成bin文件,其中一般使用Run #1操作来生成bin文件,一般配置该项即可。User Command的格式一般类似于:fromelf --bin --output=$L..\@L.bin#L作者配置的具体命令如下:$K\ARM\ARMCC\bin\fromelf.exe --bin--output=@L.bin !L其中fromelf.exe是ARM公司提供的命令行工具,用于将 ELF格式 的文件转换为二进制bin文件、十六进制hex文件或汇编代码格式;$L:表示生成的链接文件的路径,一般是工程路径下的\objects\;@L: 表示生成的链接文件的文件名(包含路径),但不包含文件扩展名;#L:表示生成的链接文件的完整路径名及文件名。编译完成后,在Build Output窗口里会显示以上内容:补充一下:这个里面为什么还有一个RUN #2的选项呢?其实用户可以用它来自定义实现一些功能,相当于自己写一个命令来实现需要的功能,比如将生成的bin文件转成数据存储到某个源文件的数组当中,类似于下面的命令:\outexe\testbin.exe@L.bin $L..\test.c其中.\ 表示MDK工程的当前路径,testbin.exe在工程路径的outexe文件夹中;.\outexe\testbin.exe代表编译完成后调用testbin.exe;.\outexe\testbin.exe后面跟一个空格;@L.bin是给testbin.exe的第一个参数;再跟一个空给,$L..\test.c是给testbin.exe的第二个参数;这两个参数分别代表要处理的bin文件和处理完成后输出的.c源文件。有兴趣的朋友可以试一下。

暗夜幽灵骑士 发表于 2025-7-17 14:22

感谢分享!Keil的编译设置确实有点复杂,这篇文章解释得很清楚,特别是生成bin文件的部分,之前一直搞不懂User Command的配置,现在明白了。
页: [1]
查看完整版本: 【每周分享】Keil编译生成hex文件和bin文件的方法