基于Keil5创建STM32汇编语言工程以及hex文件分析 |
您所在的位置:网站首页 › keil5怎么导出mainc › 基于Keil5创建STM32汇编语言工程以及hex文件分析 |
文章目录
一、工程建立和环境配置1.新建项目工程2.配置适合单片机型号的环境
二、用汇编语言编写代码三、编译运行代码1.设置参数2.代码编译3.程序调试
四、分析hex文件五、总结六、参考汇总
一、工程建立和环境配置
1.新建项目工程
双击图标,打开Keil 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 代码出处:Keil环境下创建STM32汇编语言工程并分析HEX文件内容 三、编译运行代码 1.设置参数编译前首先要设置一下参数,步骤如下: 找到并点击Options for Target...![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 扩展线性地址记录(hex 文件的第一排十六进制)也叫作 32 位地址记录或 HEX386 记录 这些记录包含数据地址的高 16 位 扩展线性地址记录总是有两个数据字节,外观如下(这里我通过标记方便对应原始数据): :020000040800F2 内容描述02这个记录当中数据字节的数量0000地址域,对于扩展线性地址记录,这个域总是 000004记录类型 04 (扩展线性地址记录)0800是地址的高 16 位F2是这个记录的校验和,计算方法:01h + NOT(02h + 00h + 00h + 04h + 08h + 00h)当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从 Intel HEX 文件读取来的随后的记录 线性地址保持有效,直到它被另外一个扩展地址记录所改变 通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址 数据部分·Intel HEX 由任意数量的十六进制记录组成。每个记录包含 5 个域,它们按一定格式排列::llaaaatt[dd…]cc 每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字 每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样: :llaaaatt[dd…]cc 内容描述:每个Intel HEX记录都由冒号开头ll数据长度域,它代表记录当中数据字节(dd)的数量aaaa地址域,它代表记录当中数据的起始地址tt代表HEX记录类型的域,它可能是以下数据当中的一个: 00(数据记录)、01(文件结束记录)、02(扩展段地址记录)、04(扩展线性地址记录)dd数据域,它代表一个字节的数据。一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符cc校验和域,它表示这个记录的校验和(校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足) 文件尾在文件的最后一排,是一个文件的结束标志: :00000001FF 内容描述00记录的长度为 00000LOAD OFFSET为000001TYPE = 01FF校验和为FF 五、总结在Keil5下创建STM32工程,用汇编语言编写程序的操作还是比较容易上手掌握的,亲自操作一遍的效果要比只看不做的效果好很多,萌新小编,还有很多不足之处,希望大佬们多多斧正 六、参考汇总① Keil环境下创建STM32汇编语言工程并分析HEX文件内容 ② KEIL Debug:error 65 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |