IRQ.s
上传用户:yyhongfa
上传日期:2013-01-18
资源大小:267k
文件大小:3k
- ;/****************************************Copyright (c)**************************************************
- ;** 广州周立功单片机发展有限公司
- ;** 研 究 所
- ;** 产品一部
- ;**
- ;** http://www.zlgmcu.com
- ;**
- ;**--------------文件信息--------------------------------------------------------------------------------
- ;**文 件 名: IRQ.s
- ;**创 建 人: 陈明计
- ;**最后修改日期: 2004年2月2日
- ;**描 述: 允许中断嵌套时的IRQ句柄
- ;** 每个工程应当有独立的这个文件的拷贝,并进行相应的修改
- ;**--------------历史版本信息----------------------------------------------------------------------------
- ;** 创建人: 陈明计
- ;** 版 本: v1.0
- ;** 日 期: 2004年2月2日
- ;** 描 述: 原始版本
- ;**
- ;**------------------------------------------------------------------------------------------------------
- ;** 修改人:
- ;** 版 本:
- ;** 日 期:
- ;** 描 述:
- ;**
- ;**--------------当前版本修订------------------------------------------------------------------------------
- ;** 修改人:
- ;** 日 期:
- ;** 描 述:
- ;**
- ;**------------------------------------------------------------------------------------------------------
- ;********************************************************************************************************/
- 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
- ;********************************************************************************************************/