IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Keil环境下创建STM32汇编语言工程并分析HEX文件内容 -> 正文阅读

[嵌入式]Keil环境下创建STM32汇编语言工程并分析HEX文件内容

一、在Keil环境下创建新项目

(一)新建工程

点击Project中的New uVision Project创建新项目

?命名文件名text4并保存

?选择芯片,我选择的是STM32F103C8

?CMSIS?下选择?COREDevice?下?Startup(其中包含了启动文件),选完后点击OK

?(二)添加源文件

右击?Source Group 1?,点击?Add New Item to Group 'Source Group 1'...

?选择文件类型,这里我们点击?Asm Files (.s)?添加汇编文件,然后输入文件名,并点击?Add

点击Source Group 1左边的加号,看到test.s,添加成功

?二、代码编写,编译与调试

(一)代码编写

 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

(二)程序编译

先进行一些初始设置,点击?Options for Target...

在Output界面下,勾选?Create HEX File,才能生成 hex 文件

在?Debug界面下,勾选?Use Simulator,将dialog dll默认配置DCM.DLL和parameter默认配置-pCM3改为dialog dll:DARMSTM.dll parameter:-pSTM32F103C8

?点击Rebuild进行编译

?编译成功,没有错误,但有一个警告

?(三)程序调试

点击右上角图标进入调试界面

?调试运行,结果符合预期,寄存器?R5R6R7R8?的值和程序设置一致,具体如下图所示:

?

三、分析生成的HEX文件

生成文件的大小

?

?用记事本打开hex文件,是一串十六进制字符

第一行内容分别是0x02,0x00,0x00,0x04,0x08,0x00,0xF2。

0x02
该行数据中有两个数据
0x00 0x00
本行数据的起始地址位
0x04
用来标识扩展线性地址的记录
该字节还可以是其他值,下面是其他值的含义
00:用来记录数据,HEX文件的大部分记录都是数据记录
01:用来标识文件结束,放在文件的最后,标识HEX文件的结尾
02:用来标识扩展段地址的记录
03:开始段地址记录
05:开始线性地址记录
0x08 0x00
该行两个字节的数据
数据类型是 04 ,即该行记录的是一个拓展地址(0x08 0x00 是地址信息,用法是将该地址(0x0800<<16) 后作为基地址
0xF2
校验和,校验和= 0x100 - 累加和
?

?四、总结

?本次实验中我遇到了许多的问题,这一方面是由于我没有学习好汇编语言,看不懂和写不来汇编语言,另一方面是我遗忘了keil 5软件的使用方法,查看寄存器的时候出现错误,我重新学习软件的使用方法后完成了这个实验,这一切的问题都需要我进一步学习才能完全解决。

五、参考资料

基于MDK创建纯汇编语言的STM32工程——汇编实现LED闪烁_Harriet的博客-CSDN博客

error 65: access violation at 0x40021000 : no 'read' permission_记录每一次成长-CSDN博客

HEX文件格式详解_林永康的博客-CSDN博客_hex文件格式

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:27:52  更:2021-09-29 10:30:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:21:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码