⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irq_3.inc

📁 周立功的EASYARM2131的测试程序
💻 INC
字号:
;/****************************************Copyright (c)**************************************************
;**                               广州周立功单片机发展有限公司
;**                                     研    究    所
;**                                        产品一部 
;**
;**                                 http://www.zlgmcu.com
;**
;**--------------文件信息--------------------------------------------------------------------------------
;**文   件   名: IRQ.inc
;**创   建   人: 陈明计
;**最后修改日期: 2004年8月27日
;**描        述: 定义IRQ汇编接口代码宏
;**
;**--------------历史版本信息----------------------------------------------------------------------------
;** 创建人: 陈明计
;** 版  本: v1.0
;** 日 期: 2004年8月27日
;** 描 述: 原始版本
;**
;**--------------当前版本修订------------------------------------------------------------------------------
;** 修改人:
;** 日 期:
;** 描 述:
;**
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/

NoInt       EQU 0x80

USR32Mode   EQU 0x10
SVC32Mode   EQU 0x13
SYS32Mode   EQU 0x1f
IRQ32Mode   EQU 0x12
FIQ32Mode   EQU 0x11


;引入的外部标号在这声明
        IMPORT  OSIntCtxSw                      ;任务切换函数
        IMPORT  OSIntExit                       ;中断退出函数
        IMPORT  OSTCBCur
        IMPORT  OSTCBHighRdy
        IMPORT  OSIntNesting                    ;中断嵌套计数器
        IMPORT  StackUsr
        IMPORT  OsEnterSum

    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} 
        
        MOV     R3,SP 
 
        MSR     CPSR_c, #(NoInt | SYS32Mode) 
        MOV     SP,R3

        MSR     CPSR_c, #(NoInt | IRQ32Mode)    ; 切换回irq模式  
        MOV     SP,R3        
                          
	LDR     R3,  =OSIntNesting                                       
	LDRB    R1, [R3]                         
	ADD     R1, R1, #1                          
	STRB    R1, [R3]          ;;SAVE BACK                          
	BL      $IRQ_Exception_Function         ; 调用c语言的中断处理程序                          
	BL      OSIntExit                                                   
	LDMFD   SP!, {R3}        ; MRS     R3, SPSR  huifu 状态                         
	MSR     SPSR_cxsf, R3                        
	LDMFD SP!, {R0-R3, R12, PC}^          ; 不进行任务切换
    MEND

    END
;/*********************************************************************************************************
;**                            End Of File
;********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -