ARM:使用F103纯汇编点灯

0 上节

ARM体系结构解析:PC寄存器机制、三级流水线与C/汇编交互全揭秘-CSDN博客

1 纯汇编点灯

主要是通过汇编代码实现下图逻辑:

汇编代码实现:

复制代码
                                PRESERVE8
                                THUMB
                
; Vevtor Table Mapped to Address 0 at Reset
                                AREA         RESET, DATA, READONLY
                                EXPORT        __Vectors
                                        
__Vectors                DCD                0
                                DCD                Reset_Handler                                ; Reset Handle
                                        
                                AREA        |.text|, CODE, READONLY
                                        
;Reset handler
Reset_Handler        PROC
                                EXPORT Reset_Handler                                [WEAK]
                                        
                                ; enable GPIOB
                                LDR R0, =(0x40021000 + 0x18)
                                LDR R1, [R0]
                                ORR R1, R1, #(1<<3)
                                STR R1, [R0]
                                
                                ; set GPIOB as output
                                LDR R0, =(0x40010C00 + 0x00)
                                LDR R1, [R0]
                                ORR R1, R1, #(1<<0)
                                STR R1, [R0]
                                
                                LDR R2, =(0x40010C00 + 0x0C)                        
loop                        
                                ; set GPIOB0 output high
                                LDR R1, [R2]
                                ORR R1, R1, #(1<<0)
                                STR R1, [R2]
                                
                                LDR R0, =0x100000        ; Delay
                                BL delay
                                
                                ; set GPIOB0 output low
                                LDR R1, [R2]
                                BIC R1, R1, #(1<<0)
                                STR R1, [R2]
                                
                                LDR R0, =0x100000        ; Delay
                                BL delay
        
delay
                                SUBS R0, R0,#1  ; R0--
                                BNE delay                 ; cmp R0,0
                                MOV PC, LR                 ; return
                                
                                b loop
                                
                                ENDP
                                        
                                 END
相关推荐
小狗爱吃黄桃罐头15 小时前
正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建
linux·arm开发·学习
szxinmai主板定制专家1 天前
基于DSP+ARM+FPGA轨道交通6U机箱结构牵引控制单元(Pcle)
大数据·arm开发·人工智能·fpga开发·架构
钡铼技术物联网关1 天前
支持Linux、鸿蒙的工业AIOT智能终端在钢铁厂的应用
linux·arm开发·边缘计算
听风lighting1 天前
嵌入式八股ARM篇
c语言·arm开发·单片机·嵌入式硬件
一枝小雨1 天前
ARM内部寄存器与常用汇编指令(ARM汇编)
汇编·arm开发
一枝小雨1 天前
ARM:什么是满减栈?为何选择满减栈?
arm开发
禾仔仔1 天前
RISC-V汇编学习(五)—— 汇编实战、GCC内联汇编(基于芯来平台)
汇编·risc-v·内联汇编·abi规则
兴达易控2 天前
兴达易控Profinet 转 ModbusTCP跨网段通信模块
arm开发
加油JIAX2 天前
CT117E-M4 CubeMX与Keil5 MDK-ARM基础配置
arm开发·stm32·蓝桥杯·嵌入式