📄 irq.s
字号:
;/****************************************Copyright (c)**************************************************
** 沈阳昊通科技服务有限公司
** http://www.inhow.com
**
**-------------------------------------------文件信息---------------------------------------------------
** 文件名: IRQ.s
** 最后修改日期: 2008-01-20
** 最后版本: 1.0
** 相关描述: 中断句柄处理
**
**------------------------------------------------------------------------------------------------------
** 作者: 陈伟斌
** 创建时间: 2008-01-20
** 最后版本: 1.0
** 相关描述: 试用版本
**
**------------------------------------------------------------------------------------------------------
** 修改者:
** 修改时间:
** 版本:
** 相关描述:
**
********************************************************************************************************/
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,LR}^ ;//保存SPSR和用户状态的SP,注意不能回写
;//如果回写的是用户的SP,所以后面要调整SP
NOP
SUB SP, SP, #4*2
MSR CPSR_c, #(NoInt | SYS32Mode) ;//切换到系统模式
BL $IRQ_Exception_Function ;//调用c语言的中断处理程序
MSR CPSR_c, #(NoInt | IRQ32Mode) ;//切换回irq模式
LDMFD SP, {R3,LR}^ ;//恢复SPSR和用户状态的SP,注意不能回写
;//如果回写的是用户的SP,所以后面要调整SP
MSR SPSR_cxsf, R3
ADD SP, SP, #4*2
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 + -