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
相关推荐
Q_219327645514 小时前
基于ARM的嵌入式温度控制系统的设计
arm开发
想你依然心痛19 小时前
从x86到ARM的HPC之旅:鲲鹏开发工具链(编译器+数学库+MPI)上手与实战
java·开发语言·arm开发·鲲鹏·昇腾
MUTA️19 小时前
x86 架构下运行 ARM-ROS2 Docker 镜像操作指南
arm开发·docker·架构
比奇堡派星星2 天前
Linux 杂项设备驱动框架详解
linux·arm开发·驱动开发
xingzhemengyou12 天前
LINUX 通过/proc/interrupts了解系统硬件中断的使用情况
linux·arm开发
rfidunion2 天前
ubuntu下使用qemu模拟ARM(一)-------安装samba服务器
服务器·arm开发·ubuntu
三佛科技-134163842122 天前
FT32F072xx、FT32F072xB、FT32F072x6/x8基于ARM Cortex-M0内核32位单片机分析
arm开发·单片机·嵌入式硬件·智能家居·pcb工艺
p66666666682 天前
STM32(基于 ARM Cortex-M 内核)中函数调用栈帧的开辟 销毁过程
arm开发·stm32·嵌入式硬件
星空真迷人3 天前
嵌入式 WiFi 加持 普通设备也能联网 “唠嗑”
arm开发·stm32·单片机·嵌入式硬件·物联网·iot
灵哎惹,凌沃敏3 天前
FreeRTOS 任务上下文切换核心函数:xPortPendSVHandler详解
c语言·arm开发