📄 irq.s
字号:
;/****************************************Copyright (c)**************************************************
;**
;** 西南科技大学计算机学院
;**
;** http://cs.swust.edu.cn
;**
;** 日期: 2004.11.8
;** 描述: lpc2200.h文件,硬件相关资源配置文件,支持LPC2200系列芯片和Lpc2100系列
;** 芯片,对于每个C或C++程序工程必须包含该文件来完成对ARM资源的分配,所有
;** VPB外设地址由该文件分配,分配的地址应保持与实际硬件资源相同。错误的分
;** 配将导致程序的运行不正常。
;**
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
;/********************************************************************************************************/
NoInt EQU 0x80
USR32Mode EQU 0x10
SVC32Mode EQU 0x13
SYS32Mode EQU 0x1f
IRQ32Mode EQU 0x12
FIQ32Mode EQU 0x11
CODE32
AREA IRQ,CODE,READONLY
MACRO
$IRQ_Label HANDLER $IRQ_Exception_Function
EXPORT $IRQ_Label ; 输出的标号
IMPORT $IRQ_Exception_Function ; 引用的外部标号
$IRQ_Label
SUB LR, LR, #4 ; 计算返回地址
STMFD SP!, {R0-R3, R12, LR} ; 保存任务环境
MRS R3, SPSR ; 保存状态
STMFD SP!, {R3}
STMFD SP, {LR}^ ; 保存用户状态的SP,注意不能回写
; 如果回写的是用户的SP,所以后面要调整SP
SUB SP, SP, #4
MSR CPSR_c, #(NoInt | SYS32Mode) ; 切换到系统模式
BL $IRQ_Exception_Function ; 调用c语言的中断处理程序
MSR CPSR_c, #(NoInt | IRQ32Mode) ; 切换回irq模式
LDMFD SP, {LR}^ ; 恢复用户状态的SP,注意不能回写
; 如果回写的是用户的SP,所以后面要调整SP
ADD SP, SP, #4 ;
LDMFD SP!, {R3}
MSR SPSR_cxsf, R3
LDMFD SP!, {R0-R3, R12, PC}^ ;
MEND
;/* 以下添加中断句柄,用户根据实际情况改变 */
;Timer0_Handler HANDLER Timer0
END
;/*********************************************************************************************************
;** End Of File
;********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -