进入中断led灯关闭,中断返回led灯。中断入口地址不知道怎么写。
以下是程序
RCCAPB2_ENR EQU 0X40021018
GPIOC_CRH EQU 0X40011004
GPIOC_ODR EQU 0X4001100C
GPIOC_13 EQU 0X422201B4
**************************
GPIOB_CRL EQU 0X40010C00
GPIOB_00 EQU 0X42218000
**************************
EXTI_IMR EQU 0X40010400;中断屏蔽寄存器,
EXTI_FTSR EQU 0X4001040C;下降沿触发寄存器
AFIO_EXTICR1 EQU 0X40010008;外部中断引脚选择寄存器
**************************
AREA ICODE,CODE
B __main ;跳转到主程序
B LED_OFF ;跳转到中断服务程序
ENTRY
EXPORT __main
__main
BL SYSTEM_BIOS
ST
BL LED_ON
B ST
SYSTEM_BIOS
LDR R0,=EXTI_IMR ;解除0位中断屏蔽
MOV R1,#0X01
STR R1,[R0]
LDR R0,=EXTI_FTSR ;设置0位中断为下降沿触发
MOV R1,#0X01
STR R1,[R0]
LDR R0,=AFIO_EXTICR1;选择pb0位为中断输入引脚
MOV R1,#0X01
STR R1,[R0]
LDR R0,=GPIOB_CRL ;设置pb0位为输入
MOV R1,#0X08
STR R1,[R0]
LDR R0,=RCCAPB2_ENR ;打开gpioc时钟gpiob
LDR R1,=0X18
STR R1,[R0]
LDR R0,=GPIOC_CRH ;设置c13口为输出
LDR R1,=0X00300000
STR R1,[R0]
BX LR
LED_ON ;打开led
LDR R0,=GPIOC_13
MOV R1,#1
STR R1,[R0]
BX LR
LED_OFF ;关闭led
STMFD SP!,{R0,R1,LR}
LDR R0,=GPIOC_13
MOV R1,#0
STR R1,[R0]
LDMFD SP!,{R0,R1,LR}
END
|