博客
关于我
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/

你可能感兴趣的文章
Objective-C实现串逐位和(附完整源码)
查看>>
Objective-C实现主存储器空间的分配和回收(附完整源码)
查看>>
Objective-C实现乘方运算---m的n次方(附完整源码)
查看>>
Objective-C实现二叉树遍历算法(附完整源码)
查看>>
Objective-C实现二进制和算法(附完整源码)
查看>>
Objective-C实现二进制补码算法(附完整源码)
查看>>
Objective-C实现互斥锁同步执行两个线程函数(附完整源码)
查看>>
Objective-C实现交易密码算法(附完整源码)
查看>>
Objective-C实现人工势场法(附完整源码)
查看>>
Objective-C实现代理服务器(附完整源码)
查看>>
Objective-C实现以递归的形式MatrixExponentiation矩阵求幂算法 (附完整源码)
查看>>
Objective-C实现优先队列算法(附完整源码)
查看>>
Objective-C实现伽玛Gamma函数(附完整源码)
查看>>
Objective-C实现位置型pid算法(附完整源码)
查看>>
Objective-C实现低通滤波器(附完整源码)
查看>>
Objective-C实现使用数组实现约瑟夫环(附完整源码)
查看>>
Objective-C实现使用管道重定向进程输入输出(附完整源码)
查看>>
Objective-C实现倒计时(附完整源码)
查看>>
Objective-C实现借记款项功能(附完整源码)
查看>>
Objective-C实现关系矩阵A和B的乘积(附完整源码)
查看>>