热门标签 | 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


推荐阅读
  • 本文实例为大家分享了d3.js图形拖拽的具体代码,供大家参考,具体内容如下 ... [详细]
  • C#路径,文件,目录,IO常见问题汇总主要内容:一、路径的相关操作,如判定路径是否合法,路径类型, ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 1、PLSQLDeveloper记住登陆密码在使用PLSQLDeveloper时,为了工作方便希望PLSQLDeveloper记住登录Oracle的用户名和密码&#x ... [详细]
  • 今天周六,原则上要休息,但想到下周还有一堆任务,还是先做一部分工作吧,就把之前做的票面设计器改了改,增加了上传图片和更换背景底图的功能。现在打算整理下这个设计器,也算对齐一个总结。不过这属于我们部门的 ... [详细]
  • vb如何去掉最后的换行符?这是VB在读多行文件时出现的问题,最后行多了换行字符。可以用Left函数来取去除最后换行字符的文本。Left函数返回Variant(String),其中包 ... [详细]
  • 前端提高篇(七十):SVG基本使用、基本样式、路径path
    SVG是使用XML来描述二维图形和绘图程序的语言。SVG遵循的是xml的规范,与html5的使用有所区别SVG绘制出来的是矢量图,放大之后不会失真官方文 ... [详细]
  • webui之常用js操作(webui界面是什么)
    本文目录一览:1、web前端开发需要掌握的几个必备技术 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • unitUnit1;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,Syst ... [详细]
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社区 版权所有