博客
关于我
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实现复制粘贴文本功能(附完整源码)
查看>>
Objective-C实现复数类+-x%(附完整源码)
查看>>
Objective-C实现外观模式(附完整源码)
查看>>
Objective-C实现多启发式a star A*算法(附完整源码)
查看>>
Objective-C实现多尺度MSR算法(附完整源码)
查看>>
Objective-C实现多种方法求解定积分(附完整源码)
查看>>
Objective-C实现多组输入(附完整源码)
查看>>
Objective-C实现多项式函数在某个点的评估算法(附完整源码)
查看>>
Objective-C实现多项式哈希算法(附完整源码)
查看>>
Objective-C实现大位数乘法(附完整源码)
查看>>
Objective-C实现大根堆(附完整源码)
查看>>
Objective-C实现奇偶检验码(附完整源码)
查看>>
Objective-C实现奇偶转置排序算法(附完整源码)
查看>>
Objective-C实现奇异值分解SVD(附完整源码)
查看>>
Objective-C实现奎因-麦克拉斯基算法(附完整源码)
查看>>
Objective-C实现子集总和算法(附完整源码)
查看>>
Objective-C实现字符串autocomplete using trie(使用 trie 自动完成)算法(附完整源码)
查看>>
Objective-C实现字符串boyer moore search博耶摩尔搜索算法(附完整源码)
查看>>