资讯专栏INFORMATION COLUMN

基于STM32的汇编程序

RancherLabs / 1900人阅读

摘要:编写汇编程序编译并调试程序编译程序右键工程点击,或点击红色小方框标记出的魔法棒在下勾选以创建文件或点击,我们可以观察到文件的生成在下勾选因为我们这里仅使用软件仿真,勾选。更改项为和项为,用于设置支持的软硬件仿真。

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, 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		END

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121611.html

相关文章

  • 基于MDK创建STM32汇编语言工程——上机实验一(9527)

    摘要:设置下面的项为和项为,用于设置支持的软硬件仿真。如有错误,请斧正。参考文献基于创建汇编语言工程并分析 文章目录 1新建工程2配置环境3测试代码4分析生成的H...

    joy968 评论0 收藏0
  • 基于STM32Cube MX开发TencentOS-Tiny软件包

    摘要:基于开发的软件包导师汪礼超学员崔林威摘要腾讯物联网操作系统是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,可裁剪等特性。图中断函数处理进行生成工程配置,按如下界面进行配置,最后点击,并点击。 ...

    shiyang6017 评论0 收藏0
  • STM32入门学习经验总结

    摘要:严格地说,应该是模仿实验。为什么觉得无从下手,看资料没有头绪经验总结看资料需要计划耐心和速度这里所谓的资料包括书籍文档。建议有报销条件的同学自己设计一块板子学习。无法报销的同学,可以选购一款开发板学习。 STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex...

    biaoxiaoduan 评论0 收藏0
  • 基于STM32平台数字温度显示器系统设计

    摘要:带中文字库的是一种具有位位并行线或线串行多种接口方式,内部含有国标一级二级简体中文字库的点阵图形液晶显示模块其显示分辨率为。贴片按键模块支持标准的协议,完整的协议栈。以最低成本提供最大实用性,为功能嵌入其他系统提供无限可能。 项目简介 开发环境: Keil5.14,CubeMX6.0.1,主...

    villainhr 评论0 收藏0
  • 单片机入门指南

    摘要:单片机入门指南本文基于常神文章基础上将单片机入门部分进行细化尽可能细节做到可实施性先引用一下常神的文章首先假设大家已经对高中物理的电路部分有所了解。单片机,如,是一种根据程序控制引脚高低电平的可编程器件,有些场合又将这种行为称作嵌入式。 ...

    nevermind 评论0 收藏0

发表评论

0条评论

RancherLabs

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<