ARM专辑-152M-pdf.zip

源代码在线查看: irq.s

软件大小: 74715 K
上传用户: QQ
关键词: M-pdf ARM 152 zip
下载地址: 免注册下载 普通下载 VIP

相关代码

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

相关资源