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

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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
試試這樣
#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
re:brm00
brm00真實惜字如金阿,小弟愚鈍,給點兒注釋....
兄臺的兩個define是定義了寄存器的入棧和出棧動作,看不出內(nèi)涵來,兄臺還是給點兒啟示吧

4樓: >>參與討論
brm00
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
re brm00
感謝brm00兄臺的不吝賜教,不知,以上代碼如何運用。剛剛跟ZLG的工程師討論過,他們說ARM內(nèi)核在硬件上不支持中斷嵌套,說是需要些特殊處理云云~~~小弟我現(xiàn)在猶如墜入霧中,還請賜教阿~~~

6樓: >>參與討論
brm00
你看下這個資料
《基于arm的嵌入式程序開發(fā)要點.pdf》,里面說得很詳細(xì),需要用baidu搜索一下。呵呵

http://blog.21ic.com/more.asp?NAME=brm00&id=20313

7樓: >>參與討論
high
我的想法:
1)首先弄明白是否真的需要嵌套。按鍵是電平還是邊沿觸發(fā)中斷?
2)如果需要嵌套,需要改寫irq的服務(wù)函數(shù)。需要asm語言修改啟動代碼。

8樓: >>參與討論
hotpower
我認(rèn)為一般不要采用中斷嵌套,因為ARM體系不贊成這個
 
9樓: >>參與討論
terrence
點解?
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
有沒人用ST的ARM STR91x的啊?
請教關(guān)于CAT24WC256的數(shù)據(jù)保存問題,奇怪的現(xiàn)象!
MagicARM2410教學(xué)實驗開發(fā)平臺
請問大家,EASYARM的JTAG能不能用并口轉(zhuǎn)USB線接電腦啊.
誰有KEIL下面使用FIQ的例子程序啊??急需要啊,謝謝了
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


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