热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于STM32的汇编程序

文章目录1.KEIL的下载及安装1.1mdk531的下载1.2mdk531的安装2基于STM32编写汇编程序2.1在Keil中新建工程2.2添加源文件2.3编译并调试程序2.4HE


文章目录

  • 1.KEIL的下载及安装
    • 1.1 mdk531的下载
    • 1.2 mdk531的安装
  • 2 基于STM32编写汇编程序
    • 2.1 在Keil中新建工程
    • 2.2 添加源文件
    • 2.3 编译并调试程序
    • 2.4 HEX文件分析
  • 3 总结
  • 4 参考文献


1.KEIL的下载及安装


1.1 mdk531的下载

链接:https://pan.baidu.com/s/1uiPGz_5Gorv0wOsAGUQsvg
提取码:3an4


1.2 mdk531的安装

解压压缩包后以管理员身份运行mdk531.exe

在这里插入图片描述

点击Next

在这里插入图片描述

勾选同意后,点击Next

在这里插入图片描述

选择好安装目录后点击Next

在这里插入图片描述

双击一下文件,安装STM32库

在这里插入图片描述

安装好后,我们可以激活它,以管理员身份运行Keil uVision5(注意一定要用管理员身份运行,否则无法激活),点击File中的License Management

在这里插入图片描述

之后会出现以下界面,复制红框中的CID码

在这里插入图片描述

解压keygen压缩包后,双击打开

在这里插入图片描述

第一步Target选择ARM,第二步将License Management中复制的CID码粘贴到注册机中的CID框中,第三步点击Generate,第四步将框中出现的Code码复制到License Management窗口中的New License ID Code中,然后点击Add LIC即可激活到2032。

在这里插入图片描述


2 基于STM32编写汇编程序


2.1 在Keil中新建工程

点击Project——>New uVision Project创建一个新工程

选择保存路径,最好每个工程都新建一个文件夹,命名文件后点击保存

在这里插入图片描述

在以下界面中选择自己对应的芯片

在这里插入图片描述

点击OK后会自动弹出以下窗口,勾选CMSIS中的CORE和Device中的Startup即可

在这里插入图片描述


2.2 添加源文件

在新建好的工程中找到Source Group 1后右键,然后点击Add New Item to Group Source Group 1…

在这里插入图片描述

因为我们是汇编文件,所以选择.s结尾的Asm File,然后输入文件名后点击添加即可。

在这里插入图片描述

编写汇编程序

AREA MYDATA, DATAAREA MYCODE, CODEENTRYEXPORT __main__mainMOV R0, #10MOV R1, #11MOV R2, #12MOV R3, #13;LDR R0, =func01BL func01;LDR R1, =func02BL func02BL func03LDR LR, =func01LDR PC, =func03B .func01MOV R5, #05BX LRfunc02MOV R6, #06BX LRfunc03MOV R7, #07MOV R8, #08 BX LREND

2.3 编译并调试程序

Ctrl+F7编译程序

在这里插入图片描述

右键工程点击Options for Target ‘Target1’,或点击红色小方框标记出的魔法棒

在这里插入图片描述

在Output下勾选Create HEX File以创建HEX文件

在这里插入图片描述

F7或点击Build,我们可以观察到hex文件的生成

在这里插入图片描述

在Debug下勾选Use Simulator(因为我们这里仅使用软件仿真),勾选Run to main()。更改Dialog DLL项为DARMSTM.DLL和TARMSTM.DLL;parameter项为-pSTM32F103C8,用于设置支持STM32F103C8的软硬件仿真。

在这里插入图片描述

点击Start/Stop Debug Session开始调试

在这里插入图片描述

在调试界面下设置断点进行动态调试,我们在MOV R3, #13处设置断点

在这里插入图片描述

点击Run(F5)运行,我们可以看到R0,R1,R2都发生了改变,而R3仍为0。

在这里插入图片描述

取消断点,我们可以看见R0—R3,R5—R8都发生了变化

在这里插入图片描述


2.4 HEX文件分析

打开生成的hex文件

在这里插入图片描述

:020000040800F2


第一个字节 0x02表示本行数据的长度;
第二、三个字节 0x00 0x00表示本行数据的起始地址;
第四个字节 0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
后面是数据字节0x08和0x00
最后一个字节 0xF2为校验和。



数据类型如下:
00: Data Rrecord 用来记录数据,HEX文件的大部分记录都是数据记录
01: End of File Record 用来标识文件结束,放在文件的最后,标识HEX文件的结尾
02: Extended Segment Address Record 用来标识扩展段地址的记录
03: Start Segment Address Record 开始段地址记录
04: Extended Linear Address Record 用来标识扩展线性地址的记录
05:Start Linear Address Record 开始线性地址记录



3 总结

本文讲述了keil中进行的软件仿真,虽然过程简单,却也遇到不少问题,好在都顺利解决了。如有不足,欢迎指出!


4 参考文献

https://blog.csdn.net/qq_45237293/article/details/111825193?spm=1001.2014.3001.5501
https://blog.csdn.net/qlexcel/article/details/5494909


推荐阅读
author-avatar
Jasper-ling玲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有