博客
关于我
STM汇编程序设计
阅读量:561 次
发布时间:2019-03-09

本文共 1531 字,大约阅读时间需要 5 分钟。

基于MDK创建STM32纯汇编语言工程

创建工程

在MDK开发环境中新建一个STM32项目。在项目菜单中选择“New uVision Project”,即可创建一个新的工程。

配置环境

在项目设置中,选择适用的核心核和设备类型。在CMSIS中选择需要使用的核,然后在Device中选择启动文件。通过工具栏中的魔术棒图标进行硬件配置。

添加源文件

将汇编代码文件添加到项目中。在MDK中,点击菜单栏的“Project”选项,选择“Add Existing File”,然后选择需要添加的汇编源文件。

测试代码

编写并测试汇编程序。在MDK中进行程序下载和调试,确保程序能够正常运行。

HEX文件观察

HEX文件通常由多个段组成,包括代码段、只读数据段、可读写数据段和未初始化数据段。通过查看HEX文件的段信息,可以了解程序在闪存和RAM中的占用情况。

基本汇编练习

编写一个用于控制LED闪烁的汇编程序。程序需要使用GPIO引脚控制LED的亮灭,并通过延迟函数实现每隔1秒闪烁一次。

LED0 EQU 0x422101a0

RCC_APB2ENR EQU 0x40021018
GPIOA_CRH EQU 0x40010804

Stack_Size EQU 0x00000400

AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size__initial_sp
AREA RESET, DATA, READONLY
__initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler

AREA |.text|, CODE, READONLY

THUMB
REQUIRE8
PRESERVE8
ENTRY
Reset_Handler
BL LED_InitMainLoop
BL LED_ON
BL Delay
BL LED_OFF
BL Delay
B MainLoop

LED_Init

PUSH { R0,R1, LR }
LDR R0,=RCC_APB2ENR
ORR R0,R0,#0x04
LDR R1,=RCC_APB2ENR
STR R0,[R1]
LDR R0,=GPIOA_CRH
BIC R0,R0,#0x0F
LDR R1,=GPIOA_CRH
STR R0,[R1]
LDR R0,=GPIOA_CRH
ORR R0,R0,#0x03
LDR R1,=GPIOA_CRH
STR R0,[R1]
MOV R0,#1
LDR R1,=LED0
STR R0,[R1]
POP { R0,R1,PC }

LED_ON

PUSH { R0,R1, LR }
MOV R0,#0
LDR R1,=LED0
STR R0,[R1]
POP { R0,R1,PC }

LED_OFF

PUSH { R0,R1, LR }
MOV R0,#1
LDR R1,=LED0
STR R0,[R1]
POP { R0,R1,PC }

Delay

PUSH { R0,R1, LR }
MOVS R0,#0
MOVS R1,#0
MOVS R2,#0
DelayLoop0
ADDS R0,R0,#1
CMP R0,#330
BCC DelayLoop0
MOVS R0,#0
ADDS R1,R1,#1
CMP R1,#330
BCC DelayLoop0
MOVS R0,#0
MOVS R1,#0
ADDS R2,R2,#1
CMP R2,#15
BCC DelayLoop0
POP { R0,R1,PC }

NOP

END

转载地址:http://betpz.baihongyu.com/

你可能感兴趣的文章
Netty源码—4.客户端接入流程一
查看>>
Netty源码—5.Pipeline和Handler一
查看>>
Netty源码—6.ByteBuf原理二
查看>>
Netty源码—7.ByteBuf原理四
查看>>
Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
查看>>
Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
查看>>
Network Sniffer and Connection Analyzer
查看>>
Nginx Location配置总结
查看>>
Nginx 反向代理解决跨域问题
查看>>
nginx 后端获取真实ip
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 我们必须知道的那些事
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>
Objective-C实现A-Star算法(附完整源码)
查看>>
Objective-C实现atoi函数功能(附完整源码)
查看>>
Objective-C实现base64加密和base64解密算法(附完整源码)
查看>>
Objective-C实现base85 编码算法(附完整源码)
查看>>
Objective-C实现basic graphs基本图算法(附完整源码)
查看>>
Objective-C实现BCC校验计算(附完整源码)
查看>>