请选择 进入手机版 | 继续访问电脑版

STM32基于汇编方式创建工程文件和闪烁LED灯

[复制链接]
西门听雨 发表于 2021-1-1 10:00:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
STM32基于汇编方式创建工程文件和闪烁LED灯



一、STM32的三种Boot模式

STM32的启动方式一般以储存器的类型来区分。

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

1.创建工程

① 双击打开 MDK
② 点击菜单栏的 project,选择 “New uVision Project” 选项
然后选择路径,并保存
③ 选择设备
我们组用的单片机是野火指南者,所以选择的设备是 STM32F103VE
④ 选择运行情况
ARM的CMSIS已经把开发所需要的软件组件都封装好了,因此直接选择即可;
CMSIS下选择CORE;
Device下Startup,此中包罗了启动文件;


右键点击source group1添加新文件,由于要使用汇编语言,所以添加.s文件,然后定名和修改文件路径。


在创建的汇编文件中添加如下内容
  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
复制代码
2.毗连硬件

用杜邦线将开发板和st-link相连,此中开发板的SWDIO连st-link的SWDIO,开发板的SWCLK连st-link的SWCLK,开发板的GND连st-link的GND,开发板的3v3连st-link的3v3。
3.在线调试

点击把戏棒,在Debug中选择ST-Link Debugger,然后点击settings

Debug Settings 选项设置,点击CMSIS-DAP Debugger右侧的Settings按钮,在弹出的对话框中设置如下:

在Utilities页,勾选“Use Debug Driver”


然后就可以编译调试了

动态调试界面如下:

4.检察hex文件



如图,此中第一行 :020000040800F2 中,可以看做是0x02 0x00 0x00 0x04 0x08 0x00 0xf2
第一个0×02体现该行数据中有两个数据
第二个,第三个0x00 0x00体现本行数据的起始地址位
第四个字节 0x04 体现扩展线性地址纪录,对应上述的TT域
第五个、第六个 0x08 0x00体现数据字节,与**数据长度域(LL)**中对应,即第一个 0x02
最后一个字节0xf2为校验和。校验和= 0x100 - 累加和
三、基于STM32 汇编每隔断1秒钟闪烁一次LED的步调

按照以上的方法新建工程,不需要设置情况。
然后到场.s文件,到场以下代码
  1. LED0 EQU 0x40010c00RCC_APB2ENR EQU 0x40021018GPIOA_CRH EQU 0x40010804Stack_Size      EQU     0x00000400                AREA    STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem       SPACE   Stack_Size__initial_sp                AREA    RESET, DATA, READONLY__Vectors       DCD     __initial_sp               ; Top of Stack                DCD     Reset_Handler              ; Reset Handler                                                        AREA    |.text|, CODE, READONLY                                    THUMB                REQUIRE8                PRESERVE8                                    ENTRYReset_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
复制代码



来源:https://blog.csdn.net/KaynSweety/article/details/111969479
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )