【嵌入式系统基础第三周作业】--ARM汇编程序入门实践

文章目录

  • 1.搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写。
    • 1.1 搭建并配置Keil嵌入式开发环境
    • 1.2完成一个基于STM32汇编程序的编写
  • 2.学习在没有硬件条件下进行仿真调试的方法,观察ARM寄存器变化状况
    • 2.1在没有硬件条件下进行仿真调试,观察ARM寄存器变化状况。
    • 2.2记录build生成的 hex文件各段的大小,了解Hex文件格式及其前8个字节内容含义
  • 3.总结
  • 4.参考

一、实验内容和任务

一、搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写。 1)记录build生成的 hex文件各段的大小,了解Hex文件格式及其前8个字节内容含义;2)学习在没有硬件条件下进行仿真调试的方法,观察ARM寄存器变化状况。

二、(选做)中值滤波程序设计。在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,因此经常采取中值滤波算法将干扰数据去除掉。根据提供的资料,写一段 ARM 汇编程序,演示中值滤波算法。

二、实验要求

1.撰写博客,记录实验详细过程。采用提供的实验报告封面,提交报告pdf文件和MD文件; 博客网址、代码git网址到学习通。

三. **实验过程介绍 **

1.搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写。

1.1 搭建并配置Keil嵌入式开发环境

需要 dmk.exe文件以及相应的stm32包

【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第1张图片

可以使用kegen进行’科学操作’,以管理员身份运行,找到CID,Target选择为ARM,点击Generate,得到注册码,.将生成的注册码复制粘贴到Keil的New Lincense ID Code空白处即可

【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第2张图片

​ 整个过程需要注意千万不要使用中文路径否则在安装时会报错,亲测

1.2完成一个基于STM32汇编程序的编写

 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

代码出处:Keil环境下创建STM32汇编语言工程并分析HEX文件内容

2.学习在没有硬件条件下进行仿真调试的方法,观察ARM寄存器变化状况

2.1在没有硬件条件下进行仿真调试,观察ARM寄存器变化状况。

首先新建项目,然后选择单片机包,此次实现选择STMF103C8,点击ok后需要勾选Starup和CORE两项
【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第3张图片
【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第4张图片

随后在Source Group里面添加Asm File文件,文件名可以自定义
【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第5张图片

在.s文件里面写入代码,点击Options for Target进行设置,需要勾选HEX File选项,才会保存hex文件,并且在Debug中找到并选中Use Simulator,便于虚拟调试
【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第6张图片
【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第7张图片

点击Rebuild进行编译,若编译无误,则点击Start/Stop Debug Session,进入调试模式,开始调试程序,调试过程中若是左边的project栏和Regiser栏消失可以在view中找到

【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第8张图片

调试的最终结果显示,寄存器R0、R1、R2、R3、R5、R6、R7、R8的值和编程所设定的值一样

【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第9张图片

2.2记录build生成的 hex文件各段的大小,了解Hex文件格式及其前8个字节内容含义

生成的hex文件可以分为三部分,扩展线性地址记录,数据部分,文件尾

【嵌入式系统基础第三周作业】--ARM汇编程序入门实践_第10张图片

扩展线性地址记录(020000040800F2)
02 这个记录当中数据字节的数量
0000 地址域,对于扩展线性地址记录,这个域总是 0000
04 记录类型 04 (扩展线性地址记录)
0800 是地址的高 16 位
F2 是这个记录的校验和,计算方法:01h + NOT(02h + 00h + 00h + 04h + 08h + 00h)

3.总结

本次实验学会了最基本的STM32程序编写,以及根据不同的硬件和环境进行后续一系列的仿真调试,也首次浅显的了解到了HEX文件这个概念

4.参考

(20条消息) 基于Keil5创建STM32汇编语言工程以及hex文件分析_露月二十日的博客-CSDN博客_汇编怎么生成hex文件

(20条消息) ARM开发:使用MDK编译stm32简单程序(闪烁LED)_可乐有点好喝的博客-CSDN博客_用keil编一个led灯闪烁程序

浅谈STM32汇编(Wizard).pdf

你可能感兴趣的:(单片机,stm32,嵌入式硬件)