📄 irq.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}
STMFD SP, {SP}^
SUB SP,SP,#4
MOV R3,SP
MSR CPSR_c, #(NoInt | SYS32Mode)
MOV SP,R3 ; 将中断模式下的SP 保存到系统模式下的SP中
MSR CPSR_c, #(NoInt | IRQ32Mode) ; 切换回irq模式
MOV SP,R3
LDR R3, =OSIntNesting
LDRB R1, [R3]
ADD R1, R1, #1
STRB R1, [R3]
BL $IRQ_Exception_Function ; 调用c语言的中断处理程序
BL OSIntExit
LDMFD SP, {SP}^
ADD SP,SP,#4
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 + -