|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求教:中斷嵌套??在線等........ |
| 作者:aliyang 欄目:ARM技術(shù) |
我用的是LPC2210,中斷共三種:I2C中斷,優(yōu)先級最高;鍵盤中斷(外部中斷3),優(yōu)先級第二高;另一個是Uart0接受中斷,優(yōu)先級最低。 問題,當(dāng)觸發(fā)鍵盤中斷(外部中斷3)后,執(zhí)行該中斷的服務(wù)程序時,取不能相應(yīng)I2c中斷,不知何故,望高人指點! 謝謝!! |
| 2樓: | >>參與討論 |
| 作者: brm00 于 2006/6/22 17:36:00 發(fā)布:
試試這樣 #define IENABLE \ __asm { MRS LR, SPSR } \ __asm { STMFD SP!, {LR} } \ __asm { MSR CPSR_c,#0x1f} \ __asm { STMFD SP!,{LR} } #define IDISABLE \ __asm { LDMFD SP!,{LR} } \ __asm { MSR CPSR_c,#0x92} \ __asm { LDMFD SP!,{LR} } \ __asm { MSR SPSR_cxsf,LR} void interrupt(void) _irq { IENABLE; ... ... IDISABLE; 清標(biāo)志位 } |
|
| 3樓: | >>參與討論 |
| 作者: aliyang 于 2006/6/22 18:33:00 發(fā)布:
re:brm00 brm00真實惜字如金阿,小弟愚鈍,給點兒注釋.... 兄臺的兩個define是定義了寄存器的入棧和出棧動作,看不出內(nèi)涵來,兄臺還是給點兒啟示吧 |
|
| 4樓: | >>參與討論 |
| 作者: brm00 于 2006/6/24 17:17:00 發(fā)布:
re #define IENABLE \ __asm { MRS LR, SPSR } \ /* 在IRQ_mode讀取SPSR_irq的內(nèi)容 */ __asm { STMFD SP!, {LR} } \ /* 在IRQ_mode將SPSR_irq的內(nèi)容入 */ __asm { MSR CPSR_c,#0x1f } \ /* 將處理器模式由當(dāng)前的中斷IRQ_mode改為系統(tǒng)SYS_mode */ __asm { STMFD SP!,{LR} } /* 在SYS_mode將LR_sys入棧 */ #define IDISABLE \ __asm { LDMFD SP!,{LR} } \ /* 在SYS_mode將LR_sys出棧 */ __asm { MSR CPSR_c,#0x92} \ /* 將處理器模式由當(dāng)前的系統(tǒng)SYS_mode改為中斷IRQ_mode */ __asm { LDMFD SP!,{LR} } \ /* 在IRQ_mode將SPSR_irq的內(nèi)容出棧賦值給寄存器LR_irq */ __asm { MSR SPSR_cxsf,LR} /* 由LR_irq將出棧后的內(nèi)容賦給SPSR_cxsf */ 上面這部分define是插在中斷服務(wù)程序中的,所以在代碼的開始就不需要重新修改LR的指針了,這部分功能已經(jīng)在進(jìn)入IRQ時由IRQ中斷的處理程序完成了。 |
|
| 5樓: | >>參與討論 |
| 作者: aliyang 于 2006/6/27 14:08:00 發(fā)布:
re brm00 感謝brm00兄臺的不吝賜教,不知,以上代碼如何運用。剛剛跟ZLG的工程師討論過,他們說ARM內(nèi)核在硬件上不支持中斷嵌套,說是需要些特殊處理云云~~~小弟我現(xiàn)在猶如墜入霧中,還請賜教阿~~~ |
|
| 6樓: | >>參與討論 |
| 作者: brm00 于 2006/6/27 22:02:00 發(fā)布:
你看下這個資料 《基于arm的嵌入式程序開發(fā)要點.pdf》,里面說得很詳細(xì),需要用baidu搜索一下。呵呵 http://blog.21ic.com/more.asp?NAME=brm00&id=20313 |
|
| 7樓: | >>參與討論 |
| 作者: high 于 2006/6/27 23:33:00 發(fā)布:
我的想法: 1)首先弄明白是否真的需要嵌套。按鍵是電平還是邊沿觸發(fā)中斷? 2)如果需要嵌套,需要改寫irq的服務(wù)函數(shù)。需要asm語言修改啟動代碼。 |
|
| 8樓: | >>參與討論 |
| 作者: hotpower 于 2006/6/28 1:16:00 發(fā)布:
我認(rèn)為一般不要采用中斷嵌套,因為ARM體系不贊成這個 |
|
| 9樓: | >>參與討論 |
| 作者: terrence 于 2006/6/28 6:57:00 發(fā)布:
點解? |
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |