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
相关推荐
JAVA面经实录9171 天前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
zlinear数据采集卡2 天前
从协议解析到波形实时显示:硬核拆解ZLinear采集卡上位机软件的开发架构
arm开发·单片机·嵌入式硬件·fpga开发·架构·开源
奔跑的架构师2 天前
[A-48]ARMv9/v8-电源状态管理机制(PSCI协调机制)
android·linux·arm开发·arm
想你依然心痛2 天前
RT-Thread组件生态:SAL网络框架与AT组件实战——网络抽象、AT指令
网络·arm开发·at·sal
secondyoung3 天前
Cortex-R52学习:存储系统
arm开发·单片机·学习·arm
c++之路3 天前
C++跨平台(九):跨平台字节序统一处理
开发语言·arm开发·c++
AndyHeee20 天前
【SVC、PendSV(系统异常) 与 外设 IRQ 、NVIC笔记】
arm开发
暮云星影20 天前
瑞芯微rk3588利用Rockchip NPU运行大语言模型(LLM)
arm开发·人工智能·语言模型·自然语言处理
techdashen20 天前
绕过系统 ICMP:用 rawsock、Npcap 和 WMI 找到默认网卡
开发语言·arm开发·rust
ThornArmor21 天前
【工具篇·番外】跨语言生态的主权回收:基于 ISA 说明书的 4-bit 双向汇编系统全线封顶
c语言·开发语言·汇编·c++·重构·架构