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

📄 irq_rtx.s

📁 Keil UV3中自带操作系统ARTX的应用例程
💻 S
字号:
;/*----------------------------------------------------------------------------
; *      R T L  -  K e r n e l
; *----------------------------------------------------------------------------
; *      Name:    IRQ_RTX.S
; *      Purpose: Tick timer interrupt handler
; *      Rev.:    V3.00 / 17-mar-2006
; *----------------------------------------------------------------------------
; *      This code is part of the RealView Run-Time Library.
; *      Copyright (c) 2004-2006 KEIL - An ARM Company. All rights reserved. 
; *---------------------------------------------------------------------------*/


                PRESERVE8                       ; 8-Byte aligned Stack
                AREA    IRQ_Area, CODE, READONLY
                ARM

                IMPORT  os_runtask
                IMPORT  os_clock_interrupt0
                EXPORT  os_clock_interrupt
;/* Offsets from the 'struct OS_TCB' */
TCB_TSTACK      EQU     36

;/*-------------------------- Tick time IRQ handler --------------------------*/
os_clock_interrupt

                STMDB   SP!,{R0-R1}             ; Save Full Context
                STMDB   SP,{SP}^                ; User SP
                NOP                             ; After User Bank Register Access
                LDMDB   SP,{R0}
                MRS     R1,SPSR                 ; User CPSR
                SUB     LR,LR,#0x4
                STMDB   R0!,{R1,LR}             ; Push PC, CPSR
                STMDB   R0,{LR}^                ; Push User LR
                SUB     R0,R0,#0x4              ; Write back problem !!
                STMDB   R0!,{R2-R12}            ; Push R12-R2
                LDMIA   SP!,{R2-R3}
                STMDB   R0!,{R2-R3}             ; Push R1-R0

                LDR     R1, =os_clock_interrupt0
                MOV     LR, PC                  ; Return Address
                BX      R1

                LDMIA   R0!,{R4-R11,R12}        ; Restore Reduced context
                MSR     SPSR_cxsf,R12
                LDMIA   R0!,{R12}
                STMDB   SP,{R0}                 ; Set User SP
                LDMDB   SP,{SP}^
                NOP                             ; After User Bank Register Access
                MOVS    PC,R12                  ; RETI

;/*--------------------------- os_set_env ------------------------------------*/
;/* Fix up runtime environment to fit idle task. It is called after the  */
;/* idle task TCB initialization. "p_TCB" identifies the TCB to be used. */

; void os_set_env (P_TCB p_TCB);

                EXPORT  os_set_env
os_set_env

                LDR     R0,[R0,#TCB_TSTACK]     ; p_TCB in R0
                MOV     SP,R0
                ADD     SP,SP,#40               ; ignore default context
                BX      LR


                END

⌨️ 快捷键说明

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