音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe

$IRQ_Label HANDLER $IRQ_Exception_Function?

作者:masm311 欄目:ARM技術
$IRQ_Label HANDLER $IRQ_Exception_Function?
這句話是什么意思,翻了幾本書也沒找到答案,請大俠指點一下。
能幫忙解釋第一句就非常感謝了,原文如下:
$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}           ; 保存任務環(huán)境
        MRS     R3, SPSR                        ; 保存狀態(tài)
        STMFD   SP, {R3, SP, LR}^               ; 保存用戶狀態(tài)的R3,SP,LR,注意不能回寫
                                                ; 如果回寫的是用戶的SP,所以后面要調整SP
        LDR     R2,  =OSIntNesting              ; OSIntNesting++
        LDRB    R1, [R2]
        ADD     R1, R1, #1
        STRB    R1, [R2]

        SUB     SP, SP, #4*3
        
        MSR     CPSR_c, #(NoInt | SYS32Mode)    ; 切換到系統(tǒng)模式
        CMP     R1, #1
        LDREQ   SP, =StackUsr
        
        BL      $IRQ_Exception_Function         ; 調用c語言的中斷處理程序

        MSR     CPSR_c, #(NoInt | SYS32Mode)    ; 切換到系統(tǒng)模式
        LDR     R2, =OsEnterSum                 ; OsEnterSum,使OSIntExit退出時中斷關閉
        MOV     R1, #1
        STR     R1, [R2]

        BL      OSIntExit

        LDR     R2, =OsEnterSum                 ; 因為中斷服務程序要退出,所以OsEnterSum=0
        MOV     R1, #0
        STR     R1, [R2]

        MSR     CPSR_c, #(NoInt | IRQ32Mode)    ; 切換回irq模式
        LDMFD   SP, {R3, SP, LR}^               ; 恢復用戶狀態(tài)的R3,SP,LR,注意不能回寫
                                                ; 如果回寫的是用戶的SP,所以后面要調整SP
        LDR     R0, =OSTCBHighRdy
        LDR     R0, [R0]
        LDR     R1, =OSTCBCur
        LDR     R1, [R1]
        CMP     R0, R1

        ADD     SP, SP, #4*3                    ;
        MSR     SPSR_cxsf, R3
        LDMEQFD SP!, {R0-R3, R12, PC}^          ; 不進行任務切換
        LDR     PC, =OSIntCtxSw                 ; 進行任務切換
    MEND

    END

2樓: >>參與討論
zlgarm
看“MACRO”關鍵字
 
參與討論
昵稱:
討論內容:
 
 
相關帖子
請教周工,關于程序進入"取指令中斷"和"取數(shù)據(jù)中斷"的問題
請問,如何使用KEIL去調試 EASYARM2200
為什么我的ADS1.2只能編譯256k的代碼??
我買了一個ARM開發(fā)板和一個仿真器,請問怎么注冊???
LPC2200系列開發(fā)板例程,若I2C從機地址錯誤主機作何反應?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號