一、建立一个关于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
(其实在网上搜索了很多,但不好找了,再此谢谢各位大佬,纯正小白,欢迎指正)