赞
踩
本篇博客用于介绍在keil环境下仿真测试一个简单的stm32汇编语言程序,
运行程序,通过观察寄存器变化来验证实验
点击 New μVision Project,从而新建一个工程文件
选择你所要使用的芯片型号,这里我选择芯片 STM32103VE 进行测试(这个名字要记住,因为后面设置参数要使用这个)
设置芯片的一些环境,勾选 CMSIS 中的 CORE 与 Device 中的 Starup
找到 Project 工作区中的 Source Group 1 文件夹(这个文件夹名称可能引人而异)
右击 Source Group 1 并点击 Add New Item to Group ‘Source Group 1’ 添加源文件
在弹出的文件类型选择框中选择__Asm File (.s)__类型文件,命令并保存
点击页面上的魔法棒,对程序环境进行设置
选择Output框,勾选Create HEX File
因为我们做的是无硬件的仿真,所以勾选左侧的 Use Simulator
(右侧的那些选项为硬件测试的设置,不用管)
即填写为下面表格这样
Dialogue DLL | Parameter |
---|---|
DARMSTM.DLL | -pSTM32F103VE |
这个设置详细讲解参考以下博客
STM32-仿真调试时的SystemInit死循环
AREA MYDATA, DATA AREA MYCODE, CODE ENTRY EXPORT __main __main MOV R0, #10 MOV R1, #11 MOV R2, #12 MOV R3, #13 ;LDR R0, =func01 BL func01 ;LDR R1, =func02 BL func02 BL func03 LDR LR, =func01 LDR PC, =func03 B . func01 MOV R5, #05 BX LR func02 MOV R6, #06 BX LR func03 MOV R7, #07 MOV R8, #08 BX LR
如果有外接硬件的话,可以参考以下博客的设置
ARM汇编基础之基于MDK创建纯汇编语言的STM32工程
右击代码的一列,点击 Insert/Remove Breakingpoint 插入断点
依次点击界面 bulid 按钮 与 debug 按钮开始程序调试
点击左上角的 step 按钮逐步步进程序(也可以按键盘上的F11进行步进)
随着程序的步进可以观察到单片机内部的寄存器数值变化,此结果是与汇编程序的理想结果一致的,实验结束。
Hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。
Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。打开后可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。
许多同学反映无法找到生成文件在哪里HEX,其实HEX文件被放在了系统自动生成的一个文件夹里,就在下图表示的这个文件夹里(名字取决于你的工程文件名)。
这个文件夹在你的工程文件夹里
找到你的工程文件夹,点开Objects文件夹
这就找到了HEX文件的所在之处了
在 build 或 rebuild 之后,界面下方的 output 界面可以观察到所生成的HEX文件的信息
参考博客:HEX文件格式详解
第一行内容分别是0x02,0x00,0x00,0x04,0x08,0x00,0xF2
名称 | 含义 |
---|---|
0x02 | 该行数据中有两个数据 |
0x00 0x00 | 本行数据的起始地址位 |
0x04 | 用来标识扩展线性地址的记录 |
0x08 0x00 | 该行两个字节的数据 |
0xF2 | 校验和 |
第一个 0×02 表示该行数据中有两个数据
第二个,第三个 0x00 0x00 表示本行数据的起始地址位
第四个字节有 0x00 0x01 0x02 0x03 0x04 0x05 ,分别有以下含义
’00’Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
’01’文件结束记录:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
’02’扩展段地址记录:用来标识扩展段地址的记录
’03’开始段地址记录:开始段地址记录
’04’扩展线性地址记录:用来标识扩展线性地址的记录
’05’开始线性地址记录:开始线性地址记录
最后一个字节 0xf8 为校验和。校验和 = 0x100 - 累加和。
在nodepad++中,如果该校验和不是绿色,则表示该校验和是错的。
注意,0×04 标识扩展线性地址的记录,所以如上图中的020000040002f8中,拓展地址是0002。那么第二行数据的起始地址就是0002c000,即0x0002c000开始
本文介绍了在keil环境下,演示了如何创建工程文件、生成Hex文件、debug的具体设置,并演示了如何在keil中进行汇编语言源文件的添加与调试运行,最后对生成的Hex文件的第一行内容进行了分析。
Hex文件对于之后的烧入是必要的,因此对Hex文件的生成以及格式都需要进行一定的了解。本次实验只进行了软件的仿真实验,并未进行真正的硬件调试,后续会继续调试硬件,并会在博客中进行补充完善。
参考博客:
1.基于MDK创建纯汇编语言的STM32工程——汇编实现LED闪烁
2.STM32基于汇编方式创建工程文件和闪烁LED灯
3.ARM汇编基础之基于MDK创建纯汇编语言的STM32工程
4.基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容
5.HEX文件格式详解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。