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

📄 swirv.s

📁 射频芯片nRF905例程
💻 S
字号:
;/*****************************************************************************/
;/* SWI.S: SWI Handler                                                        */
;/*****************************************************************************/
;/* This file is part of the uVision/ARM development tools.                   */
;/* Copyright (c) 2005-2006 Keil Software. All rights reserved.               */
;/* This software may only be used under the terms of a valid, current,       */
;/* end user licence from KEIL for a compatible version of KEIL software      */
;/* development tools. Nothing else gives you the right to use this software. */
;/*****************************************************************************/

T_Bit           EQU     0x20

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

                EXPORT  SWI_Handler
SWI_Handler   
                STMFD   SP!, {R12, LR}         ; Store R12, LR//在ARTX中没有保护SPSR
                MRS     R12, SPSR              ; Get SPSR
                STMFD   SP!, {R8, R12}         ; Store R8, SPSR//在ARTX中没有保护SPSR
                TST     R12, #T_Bit            ; Check Thumb Bit
                LDRNEH  R12, [LR,#-2]          ; Thumb: Load Halfword
                BICNE   R12, R12, #0xFF00      ;        Extract SWI Number
                LDREQ   R12, [LR,#-4]          ; ARM:   Load Word
                BICEQ   R12, R12, #0xFF000000  ;        Extract SWI Number
User_swi
                LDR     R8, SWI_Count	       ;
                CMP     R12, R8
                BHS     SWI_Dead               ; Overflow
                ADR     R8, SWI_Table
                LDR     R12, [R8,R12,LSL #2]   ; Load SWI Function Address
                MOV     LR, PC                 ; Return Address
                BX      R12                    ; Call SWI Function 
Exit_swi
                LDMFD   SP!, {R8, R12}         ; Load R8, SPSR
                MSR     SPSR_cxsf, R12         ; Set SPSR
                LDMFD   SP!, {R12, PC}^        ; Restore R12 and Return

SWI_Dead        B       SWI_Dead               ; None Existing SWI

SWI_Cnt         EQU    (SWI_End-SWI_Table)/4
SWI_Count       DCD     SWI_Cnt

                IMPORT  __SWI_0;ARTX占用
                IMPORT  __SWI_1;ARTX保留
                IMPORT  __SWI_2;ARTX保留
                IMPORT  __SWI_3;ARTX保留
                IMPORT  __SWI_4;ARTX保留
;                IMPORT  __SWI_5;ARTX保留
;                IMPORT  __SWI_6;ARTX占用
;                IMPORT  __SWI_7;ARTX占用

;                IMPORT  __SWI_8;用户SWI8
;                IMPORT  __SWI_9;用户SWI9
;                IMPORT  __SWI_10;用户SWI10
;                IMPORT  __SWI_11;用户SWI11
;                IMPORT  __SWI_12;用户SWI12
;                IMPORT  __SWI_13;用户SWI13
;                IMPORT  __SWI_14;用户SWI14
;                IMPORT  __SWI_15;用户SWI15
SWI_Table
                DCD     __SWI_0                ; SWI 0 Function Entry
                DCD     __SWI_1                ; SWI 1 Function Entry
                DCD     __SWI_2                ; SWI 2 Function Entry
                DCD     __SWI_3                ; SWI 3 Function Entry
                DCD     __SWI_4                ; SWI 4 Function Entry
;                DCD     __SWI_5                ; SWI 5 Function Entry
;                DCD     __SWI_6                ; SWI 6 Function Entry
;                DCD     __SWI_7                ; SWI 7 Function Entry
;                DCD     __SWI_8                ; SWI 8 Function Entry
;                DCD     __SWI_9                ; SWI 9 Function Entry
;                DCD     __SWI_10               ; SWI 10 Function Entry
;                DCD     __SWI_11               ; SWI 11 Function Entry
;                DCD     __SWI_12               ; SWI 11 Function Entry
;                DCD     __SWI_13               ; SWI 11 Function Entry
;                DCD     __SWI_14               ; SWI 11 Function Entry
;                DCD     __SWI_15               ; SWI 11 Function Entry
SWI_End


                END

⌨️ 快捷键说明

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