start.s
.globl _start @指定标号_start为globl型, 外部可调用
_start: @定义_start标号,GNU编译器默认程序入口
ldr r1, =0xE0200280 @将 GPJ2CON寄存器地址号写入r1
// 设置CBT-Tin210 板载LED连接到GPJ4端口,需要修改寄存器地址
ldr r1, =0xE02002c0 @GPJ4CON寄存器地址
ldr r0, =0x00001111 @将配置字0x00001111写入r0
str r0, [r1] @配置字写入GPJ2CON寄存器
mov r2, #0x1000 @赋值 r2=1000,用于定义循环次数
led_blink:
ldr r1, =0xE0200284 @GPJ2DAT寄存器端口地址
ldr r1, =0xE02002c0 @GPJ4DAT寄存器地址
mov r0, #0
str r0, [r1] @写入0,点亮LED
bl delay @调用延时函数
ldr r1, =0xE0200284
ldr r1, =0xE02002c0 @GPJ4DAT寄存器地址
mov r0, #0xf
str r0, [r1] @写入1,熄灭LED
bl delay @调用 延时函数
sub r2, r2, #1 @r2 = r2-1
cmp r2,#0 @亮/灭过程执行了1000次
bne led_blink @少于1000次,跳转到led_blink处继续执行
halt: @定意标号
b halt @跳转到halt,死循环
delay: @定义延时函数
mov r0, #0x100000 @延时时间,可尝试改为0x400000
delay_loop:
cmp r0, #0
sub r0, r0, #1
bne delay_loop
mov pc, lr @函数返回,适用于bl指令调用。lr存有调用处的断点。