1.文章默认已经安装好Keil MDK,如若没有请参考:https://blog.csdn.net/k1ang/article/details/79439891 2.本次实验我们需要stm32芯片,需要在官网下载并安装:https://www.keil.com/dd2/pack ,我下载的是下图,请自行下载安装。
一、在MDK创建一个新的工程
- 自行选择文件保存路径以及文件名称,选好后进入如下界面
- 我选择的是STM32F103C8,之后会进入到以下界面
ARM 的CMSIS 已经把开发所需要的软件组件都封装好了,因此直接选择即可; CMSIS 下选择CORE ; Device 下Startup ,其中包含了启动文件; - 之后选择OK,进行下一步,准备编写程序
右击source group 1 ,选择Add New Item to Group
- 选择
.s 文件,为你的文件命名 - 创建后将代码输入进去
AREA MYDATA, DATA
AREA MYCODE, CODE
ENTRY
EXPORT __main
__main
MOV R0,
MOV R1,
MOV R2,
MOV R3,
;LDR R0, =func01
BL func01
;LDR R1, =func02
BL func02
BL func03
LDR LR, =func01
LDR PC, =func03
B .
func01
MOV R5,
BX LR
func02
MOV R6,
BX LR
func03
MOV R7,
MOV R8,
BX LR
- 在“Debug”选项卡中选择“Use Simulator”,表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F103C8”,用于设置支持
STM32F103C8 的软硬件仿真。
二、进行调试
具体调试方法请见:https://blog.csdn.net/ybhuangfugui/article/details/51706145
三、生成HEX文件
调试成功后,选择生成HEX文件
- 点击魔法棒进入界面
- 完成之后,点击OK,再点击编译按钮
- 然后打开项目所在文件夹,然后发现.hex文件,如果没有,看看当前文件夹下有没有Objects文件夹,hex也有可能在Objects文件夹里生成。
3.1观察生成的.HEX文件
HEX文件具体格式参考链接:https://blog.csdn.net/a1037488611/article/details/43340055
:(冒号)每个Intel HEX 记录 都由冒 号开头 ; LL 是 数 据 长 度域, 它 代表 记录当 中 数 据字 节 (dd) 的 数量 ; aaaa 是地址域, 它代表 记录当 中 数据的起始地址; TT是代表HEX 记录类 型的域 , 它 可能是以下 数 据 当 中的一 个: 00 – 数 据 记录(Data Record) 01 – 文件结 束 记录(End of FileRecord) 02 – 扩展段地址 记录(ExtendedSegment Address Record) 03 – 开始段地址 记录(Start Segment Address Record) 04 – 扩展 线 性地址 记录(Extended Linear Address Record) 05 – 开始线性地址 记录(Extended Segment Address Record) dd 是数据域 , 它代表一 个 字 节 的 数 据. 一 个记录 可以有许多数据字节. 记录当中数据字节的数量必 须和数据长度域(ll) 中指定的数字相符. cc 是校验和域 , 它表示这个记录的校验和. 校验和的计算是通过将记录当中所有十六进制编码数字对的 值相加, 以256 为模进行以下补足.
表示为:“:[1字节长度][2字节地址][1字节记录类型][n字节数据段][1字节校验和] ”
:02 0000 04 0800 F2
每个HEX由“:”开头 02:表示记录当中有2个字节 0000:数据的起始地址 04:表示HEX的记录类型为扩展线性地址记录 0800:代表地址段 F2:是这个记录的校验和
参考链接: Keil生成.hex文件: https://blog.csdn.net/u014453898/article/details/56673487 实验过程参照: https://blog.csdn.net/qq_43279579/article/details/111717607 https://blog.csdn.net/ssj925319/article/details/111868500 https://blog.csdn.net/xwmrqqq/article/details/111824539 https://blog.csdn.net/u010632165/article/details/106481146
|