#define WTDCON 0xE2700000
#define SVC_STACK 0xD0037D80
.global _start
_start:
ldr r0, =WTDCON //watchdog timer 控制寄存器地址写入r0寄存器
ldr r1, =0x0 //赋值0
str r1, [r0] //寻址,写0关闭watchdog
ldr sp, = SVC_STACK //设置c调用栈地址
bl led_blink
b . //死循环
//c源程序
#define GPJ0CON 0xE0200240
#define GPJ0DAT 0xE0200244
#define rGPJ0CON *((volatile unsigned int *)GPJ0CON) //通过宏定义寄存器内存地址所代表的值
#define rGPJ0DAT *((volatile unsigned int *)GPJ0DAT)
void wait1s(void);
void led_blink(){
rGPJ0CON = 0x11111111;
while(1){
rGPJ0DAT = ((0<<3)|(0<<4)|(0<<5)); //3,4,5位写0
wait1s();
rGPJ0DAT = ((1<<3)|(1<<4)|(1<<5)); //3,4,5位写1
wait1s();
}
}
void wait1s(void){
volatile unsigned int i = 10000000;
while(i--); //循环至0结束
}