|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(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 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 于 2006/1/11 11:23:00 發(fā)布:
看“MACRO”關鍵字 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |