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日
				;** 描 述: 原始版本
				;**
				;**------------------------------------------------------------------------------------------------------
				;** 修改人: 
				;** 版  本: 
				;** 日 期: 
				;** 描 述: 
				;**
				;**--------------当前版本修订------------------------------------------------------------------------------
				;** 修改人:
				;** 日 期:
				;** 描 述:
				;**
				;**------------------------------------------------------------------------------------------------------
				;********************************************************************************************************/
				
				NoInt       EQU 0x80
				
				USR32Mode   EQU 0x10
				SVC32Mode   EQU 0x13
				SYS32Mode   EQU 0x1f
				IRQ32Mode   EQU 0x12
				FIQ32Mode   EQU 0x11
				
				
				;引入的外部标号在这声明
				        IMPORT  OSIntCtxSw                      ;中断中任务切换函数
				        IMPORT  OSIntExit                       ;中断退出函数
				        IMPORT  OSTCBCur                        ;指向当前任务TCB的指针
				        IMPORT  OSTCBHighRdy                    ;指向将要运行的任务TCB的指针
				  
				        IMPORT  OSIntNesting                    ;中断嵌套计数器
				        IMPORT  StackUsr
				
				
				    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, {SP, LR}^                   ; 保存用户状态的SP,LR,注意不能回写
				                                                ; 如果回写的是用户的SP,所以后面要调整SP
				        LDR     R2,  =OSIntNesting              ; OSIntNesting++
				        LDRB    R1, [R2]
				        ADD     R1, R1, #1
				        STRB    R1, [R2]
				
				        SUB     SP, SP, #4*2
				        MSR     CPSR_c, #(NoInt | SYS32Mode)    ; 切换到系统模式
				        CMP     R1, #1
				        LDREQ   SP, =StackUsr
				        
				        BL      $IRQ_Exception_Function         ; 调用c语言的中断处理程序
				        BL      OSIntExit
				
				        MSR     CPSR_c, #(NoInt | IRQ32Mode)    ; 切换回irq模式
				        LDMFD   SP, {SP, LR}^                   ; 恢复用户状态的SP,LR,注意不能回写
				                                                ; 如果回写的是用户的SP,所以后面要调整SP
				        LDR     R0, =OSTCBHighRdy
				        LDR     R0, [R0]
				        LDR     R1, =OSTCBCur
				        LDR     R1, [R1]
				        CMP     R0, R1
				
				        ADD     SP, SP, #4*2                    ; 
				        LDMFD   SP!, {R3}
				        MSR     SPSR_cxsf, R3
				
				        LDMEQFD SP!, {R0-R3, R12, PC}^          ; 不进行任务切换
				        LDR     PC, =OSIntCtxSw                 ; 进行任务切换
				    MEND
				
				;/* 以下添加中断句柄,用户根据实际情况改变 */
				
				;/*中断*/
				IRQ_Handler	HANDLER IRQ_Exception
				
				
				;/*定时器0中断*/
				Timer0_Handler  HANDLER Timer0_Exception
				
				    END
				;/*********************************************************************************************************
				;**                            End Of File
				;********************************************************************************************************/
							

相关资源