keil5如何生成hex文件

img

img

img


已经勾选了,编译这样好像没问题,0错误,0警告,不生成hex文件,求解决。

你这个设置没问题,没生成的原因是,你这个版本没有注册,代码长度超过了试用版的范围,所以没有生成hex文件。
错误提示里写得很明白

在Keil uVision 5中,生成Hex文件的步骤如下:

在Keil uVision 5中打开你的工程。

在工程树中选择Target,并右键单击它。

在右键菜单中选择"Options for Target...",打开"Target Options"对话框。

在"Target Options"对话框的左侧栏中,选择"Output"选项卡。

在"Output"选项卡中,选择"Create HEX File"复选框。

点击"OK"按钮保存更改并关闭对话框。

在Keil uVision 5中,选择"Project"菜单,然后选择"Build Target"。这将编译你的工程并生成HEX文件。

在工程目录下,找到生成的HEX文件。HEX文件的名称与你的Target名称相同,文件扩展名为".hex"。

  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:keil下汇编程序的调试及hex文件详解
  • 除此之外, 这篇博客: keil下汇编程序的调试及hex文件详解中的 3. hex文件格式详解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • hex文件是什么

    它是由一行行符合Intel HEX 文件格式的文本所构成的ASCII 文本文件。每一行包含一 个 HEX 记录 ,由对应机器语言码和/或常量数据的十六进制编码数字组成。Hex文件通常用于传输将被存于ROM 或者EPROM 中的程序和数 据。大多数EPROM 编程器或模拟器使用Intel HEX 文件。Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。

    • hex文件格式
    冒号数据长度数据起始地址数据类型数据校验码
    :1 byte2 byte1 byten byte1 byte
    1. 第一个字节:表示数据的长度,即有多少个数据

    2. 第二个,第三个字节表示数据的起始地址.

    3. 第四字节表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。

    • ‘00’ Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录

    • ‘01’ End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾

    • ‘02’ Extended Segment Address Record: 用来标识扩展段地址的记录

    • ‘03’ Start Segment Address Record: 开始段地址记录

    • ‘04’ Extended Linear Address Record: 用来标识扩展线性地址的记录

    • ‘05’ Start Linear Address Record: 开始线性地址记录

    1. 第五个字节到最后一个字节之前,为数据

    2. 最后一个字节 为校验和。

    校验和的算法为:计算校验和前所有16进制码的累加和(不计进位),检验和 = 0x100 - 累加和.

    • 示例说明

    image-20210924123544404

    其中第一行数据 :020000040800F2 ,可拆分为:

    0x02 表示有两个数据

    0x00 0x00 数据起始地址

    0x04 代表数据类型,即扩展线性地址记录

    0x08 0x00 表示两个数据

    0xF2 校验和,检验和 = 0x100 - 累加和.

    检验数据

    累加和:将最后一个字节之前的数据相加,即0x02+0x00+0x00+0x04+0x08+0x00=0x0E

    校验和=0x100-0x0E=0xF2,数据检验正确