一、建立一个关于stm32的工程

打开keil5,如图先点击Project,再点击New uVision Project.

在这里插入图片描述
之后结果如图,在1处可以更改文件储存路径,2处为工程名字。
在这里插入图片描述
点击保存后如图,在红框中可以搜索需要的板子型号。
注意 :可能搜索之后无结果,有可能是搜索错误,或没有下载安装对应的pack包。
在这里插入图片描述
点击ok之后,如图选择运行环境。CMSIS中选择CORE;Device中选择Startup。
在这里插入图片描述
再次点击ok键后,工程即建立成功。

二、添加文件

先鼠标右击1处,再点击2处,添加文件。
在这里插入图片描述
因为此次准备使用汇编语言进行演示,所以文本格式选择第三个。输入名字点击add进行添加文件。
在这里插入图片描述

三、汇编程序并调试

文件添加成功后就可以进行编写了,代码如下:

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

代码写完后即可进行编译并调试
在这里插入图片描述
三个方框从左向右依次是编译、魔术棒、调试按钮。编译完成后若想进行调试还需进行相应设置,此处用的是软件调试。点击中间的红色方框。如图
在这里插入图片描述
若要烧录到板子里,在这个选项中需勾选方框处,生成hex文件。其余步骤遍不多说了,我也不清楚。
在这里插入图片描述
此处页面中左边为软件调试设置,右边为有专有下载器的调试设置。选择左边的后,还需改变下方红框中的内容,选择对应板子。点击ok,就可以进行调试了。
在这里插入图片描述
调试结果如上图,左边为结果,调试正确。(断点设置是在代码行前点击,出现红点,即表明断点设置成功)

四、分析hex文件

1.最终生成程序各部分的大小。
在这里插入图片描述
2,hex文件格式简介
hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。
3,分析hex文件第一行内容。在这里插入图片描述
文件以行为单位,每行以冒号开头,内容全为16进制码
第一行可分为0x02、0x00、0x00、0x04、0x08、0x00、0xF2
0x02:表示数据长度

紧接着的两个0x00为地址

0x04:表示数据类型,有以下几类:
‘00’ Data Record//数据记录
‘01’ End of File Record//文件结束记录
‘02’ Extended Segment Address Record//扩展段地址记录
‘03’ Start Segment Address Record//开始段地址记录
‘04’ Extended Linear Address Record//扩展线性地址记录
‘05’ Start Linear Address Record//开始线性地址记录

再后面的0x08与0x00表示数据

0xF2:表示效验码,校验和,校验和= 0x100 - 累加和

五、总结

经历了各种各样的问题,总算是勉勉强强的写出来了。在过程中遇到了各种各样的问题,在解决问题中也使我记忆更加深刻。反正还有很多不会,连门都没看到,会继续努力。

六、参考

https://blog.csdn.net/qq_43279579/article/details/111717607

(其实在网上搜索了很多,但不好找了,再此谢谢各位大佬,纯正小白,欢迎指正)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐