一、实验内容和任务
一、搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写。 1)记录build生成的 hex文件各段的大小,了解Hex文件格式及其前8个字节内容含义;2)学习在没有硬件条件下进行仿真调试的方法,观察ARM寄存器变化状况。
二、(选做)中值滤波程序设计。在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,因此经常采取中值滤波算法将干扰数据去除掉。根据提供的资料,写一段 ARM 汇编程序,演示中值滤波算法。
二、实验要求
1.撰写博客,记录实验详细过程。采用提供的实验报告封面,提交报告pdf文件和MD文件; 博客网址、代码git网址到学习通。
三. **实验过程介绍 **
需要 dmk.exe文件以及相应的stm32包
可以使用kegen进行’科学操作’,以管理员身份运行,找到CID,Target选择为ARM,点击Generate,得到注册码,.将生成的注册码复制粘贴到Keil的New Lincense ID Code空白处即可
整个过程需要注意千万不要使用中文路径否则在安装时会报错,亲测
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文件内容
首先新建项目,然后选择单片机包,此次实现选择STMF103C8,点击ok后需要勾选Starup和CORE两项
随后在Source Group里面添加Asm File文件,文件名可以自定义
在.s文件里面写入代码,点击Options for Target进行设置,需要勾选HEX File选项,才会保存hex文件,并且在Debug中找到并选中Use Simulator,便于虚拟调试
点击Rebuild进行编译,若编译无误,则点击Start/Stop Debug Session,进入调试模式,开始调试程序,调试过程中若是左边的project栏和Regiser栏消失可以在view中找到
调试的最终结果显示,寄存器R0、R1、R2、R3、R5、R6、R7、R8的值和编程所设定的值一样
生成的hex文件可以分为三部分,扩展线性地址记录,数据部分,文件尾
扩展线性地址记录(020000040800F2)
02 这个记录当中数据字节的数量
0000 地址域,对于扩展线性地址记录,这个域总是 0000
04 记录类型 04 (扩展线性地址记录)
0800 是地址的高 16 位
F2 是这个记录的校验和,计算方法:01h + NOT(02h + 00h + 00h + 04h + 08h + 00h)
本次实验学会了最基本的STM32程序编写,以及根据不同的硬件和环境进行后续一系列的仿真调试,也首次浅显的了解到了HEX文件这个概念
(20条消息) 基于Keil5创建STM32汇编语言工程以及hex文件分析_露月二十日的博客-CSDN博客_汇编怎么生成hex文件
(20条消息) ARM开发:使用MDK编译stm32简单程序(闪烁LED)_可乐有点好喝的博客-CSDN博客_用keil编一个led灯闪烁程序
浅谈STM32汇编(Wizard).pdf