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
相关推荐
en.en..1 小时前
volatile 完整深度教程(C 代码 + 带注释 ARM 汇编 + 硬件中断原理 + 分步运行时序)
c语言·汇编·arm开发
下辈子不要当码农3 小时前
项目框架搭建(2)
arm开发
女神下凡21 小时前
芯参谋(61):PMSM永磁同步电机驱动电路设计指南
arm开发·单片机·嵌入式硬件·硬件工程·设计规范
早八晚十啊1 天前
基于ARM Cortex-A53与LVGL 9.0的智能车载系统设计与实现
arm开发·车载系统
水饺编程1 天前
第2章:Linux 基础,rm 命令
linux·c语言·汇编
a5986521 天前
ARM服务器部署Docker云手机,多开实例性能实测
服务器·arm开发·docker·云手机
a5986521 天前
ARM服务器搭建云手机教程|原生ARM架构,消除指令转译损耗
arm开发
水饺编程1 天前
第2章:Linux 基础,关机命令
linux·c语言·汇编
en.en..2 天前
汇编与 C 语言 互调用
汇编
XMAIPC_Robot2 天前
ARM+FPGA+AI船舶/工业自动化控制器EMC测试等级解析(IEC60533/IEC60945)
arm开发·人工智能·fpga开发·zynq·arm+fpga·rk3588+fpga