IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 在keil下创建工程并调试STM32汇编源程序【单片机入门】 -> 正文阅读

[嵌入式]在keil下创建工程并调试STM32汇编源程序【单片机入门】

本篇博客用于介绍在keil环境下仿真测试一个简单的stm32汇编语言程序,
运行程序,通过观察寄存器变化来验证实验

一、新建一个keil工程

  1. 点击 New μVision Project,从而新建一个工程文件

    在这里插入图片描述

    在这里插入图片描述

  2. 选择你所要使用的芯片型号,这里我选择芯片 STM32103VE 进行测试(这个名字要记住,因为后面设置参数要使用这个)

    在这里插入图片描述

  3. 设置芯片的一些环境,勾选 CMSIS 中的 COREDevice 中的 Starup

    在这里插入图片描述

二、在工程中添加汇编语言程序

  1. 找到 Project 工作区中的 Source Group 1 文件夹(这个文件夹名称可能引人而异)

    在这里插入图片描述

  2. 右击 Source Group 1 并点击 Add New Item to Group ‘Source Group 1’ 添加源文件

    在这里插入图片描述

  3. 在弹出的文件类型选择框中选择__Asm File (.s)__类型文件,命令并保存
    在这里插入图片描述

三、编译接口环境设置

3.1无硬件,软件仿真情况下的设置

  1. 点击页面上的魔法棒,对程序环境进行设置 在这里插入图片描述

  2. 选择Output框,勾选Create HEX File
    在这里插入图片描述


  1. 继续在点击魔法棒后弹出的框中选择 Debug 选项

因为我们做的是无硬件的仿真,所以勾选左侧的 Use Simulator
(右侧的那些选项为硬件测试的设置,不用管)

![在这里插入图片描述](https://img-blog.csdnimg.cn/ff8e9bac43424d49b63f36f75e93011d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAdHlfc2o=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

  1. 设置参数
    这一步很重要,如果设置错误,后续寄存器可能无法观察到变化
    Dialogue DLL 中的填写内容改为 DARMSTM.DLL
    Parameter 中填写 -pSTM32F103ZE(这个名称要与你选择的芯片型号一致)

即填写为下面表格这样

Dialogue DLLParameter
DARMSTM.DLL-pSTM32F103VE

在这里插入图片描述
这个设置详细讲解参考以下博客
STM32-仿真调试时的SystemInit死循环


  1. 填写汇编语言代码
    在新建的源文件中填写以下汇编程序
    在这里插入图片描述
  • 源程序如下
 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



3.2有外接硬件测试调试设置

如果有外接硬件的话,可以参考以下博客的设置
ARM汇编基础之基于MDK创建纯汇编语言的STM32工程


3.3运行调试程序

  1. 右击代码的一列,点击 Insert/Remove Breakingpoint 插入断点
    在这里插入图片描述

  2. 依次点击界面 bulid 按钮 与 debug 按钮开始程序调试
    在这里插入图片描述

  3. 点击左上角的 step 按钮逐步步进程序(也可以按键盘上的F11进行步进)
    在这里插入图片描述

  4. 随着程序的步进可以观察到单片机内部的寄存器数值变化,此结果是与汇编程序的理想结果一致的,实验结束。
    在这里插入图片描述

四、观察生成的Hex文件

Hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。

Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。打开后可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。

4.1在文件夹中找到你的Hex文件

许多同学反映无法找到生成文件在哪里HEX,其实HEX文件被放在了系统自动生成的一个文件夹里,就在下图表示的这个文件夹里(名字取决于你的工程文件名)。

这个文件夹在你的工程文件夹里

在这里插入图片描述

找到你的工程文件夹,点开Objects文件夹
在这里插入图片描述

这就找到了HEX文件的所在之处了

在这里插入图片描述

4.2 观察最终生成的 Hex 文件

  1. 观察最终生成 Hex文件的各段的大小

buildrebuild 之后,界面下方的 output 界面可以观察到所生成的HEX文件的信息
在这里插入图片描述

  1. 观察Hex文件第一行内容
    在这里插入图片描述

参考博客:HEX文件格式详解
第一行内容分别是0x02,0x00,0x00,0x04,0x08,0x00,0xF2

名称含义
0x02该行数据中有两个数据
0x00 0x00本行数据的起始地址位
0x04用来标识扩展线性地址的记录
0x08 0x00该行两个字节的数据
0xF2校验和

第一个 0×02 表示该行数据中有两个数据

第二个,第三个 0x00 0x00 表示本行数据的起始地址位

第四个字节有 0x00 0x01 0x02 0x03 0x04 0x05 ,分别有以下含义

’00’Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录

’01’文件结束记录:用来标识文件结束,放在文件的最后,标识HEX文件的结尾

’02’扩展段地址记录:用来标识扩展段地址的记录

’03’开始段地址记录:开始段地址记录

’04’扩展线性地址记录:用来标识扩展线性地址的记录

’05’开始线性地址记录:开始线性地址记录

最后一个字节 0xf8 为校验和。校验和 = 0x100 - 累加和。
在nodepad++中,如果该校验和不是绿色,则表示该校验和是错的。

注意,0×04 标识扩展线性地址的记录,所以如上图中的020000040002f8中,拓展地址是0002。那么第二行数据的起始地址就是0002c000,即0x0002c000开始


五、总结

??本文介绍了在keil环境下,演示了如何创建工程文件、生成Hex文件、debug的具体设置,并演示了如何在keil中进行汇编语言源文件的添加与调试运行,最后对生成的Hex文件的第一行内容进行了分析。

??Hex文件对于之后的烧入是必要的,因此对Hex文件的生成以及格式都需要进行一定的了解。本次实验只进行了软件的仿真实验,并未进行真正的硬件调试,后续会继续调试硬件,并会在博客中进行补充完善。




参考博客:
1.基于MDK创建纯汇编语言的STM32工程——汇编实现LED闪烁
2.STM32基于汇编方式创建工程文件和闪烁LED灯
3.ARM汇编基础之基于MDK创建纯汇编语言的STM32工程
4.基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容
5.HEX文件格式详解

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:27:52  更:2021-09-29 10:30:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:34:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码