本文共 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 0x40021018GPIOA_CRH EQU 0x40010804Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem SPACE Stack_Size__initial_spAREA RESET, DATA, READONLY__initial_sp ; Top of StackDCD Reset_Handler ; Reset HandlerAREA |.text|, CODE, READONLY
THUMBREQUIRE8PRESERVE8ENTRYReset_HandlerBL LED_InitMainLoopBL LED_ONBL DelayBL LED_OFFBL DelayB MainLoopLED_Init
PUSH { R0,R1, LR }LDR R0,=RCC_APB2ENRORR R0,R0,#0x04LDR R1,=RCC_APB2ENRSTR R0,[R1]LDR R0,=GPIOA_CRHBIC R0,R0,#0x0FLDR R1,=GPIOA_CRHSTR R0,[R1]LDR R0,=GPIOA_CRHORR R0,R0,#0x03LDR R1,=GPIOA_CRHSTR R0,[R1]MOV R0,#1LDR R1,=LED0STR R0,[R1]POP { R0,R1,PC }LED_ON
PUSH { R0,R1, LR }MOV R0,#0LDR R1,=LED0STR R0,[R1]POP { R0,R1,PC }LED_OFF
PUSH { R0,R1, LR }MOV R0,#1LDR R1,=LED0STR R0,[R1]POP { R0,R1,PC }Delay
PUSH { R0,R1, LR }MOVS R0,#0MOVS R1,#0MOVS R2,#0DelayLoop0ADDS R0,R0,#1CMP R0,#330BCC DelayLoop0MOVS R0,#0ADDS R1,R1,#1CMP R1,#330BCC DelayLoop0MOVS R0,#0MOVS R1,#0ADDS R2,R2,#1CMP R2,#15BCC DelayLoop0POP { R0,R1,PC }NOP
END转载地址:http://betpz.baihongyu.com/