|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
Easyarm2200板子上外部中斷實驗的問題,請幫我看看!!!! |
| 作者:xiaomou 欄目:ARM技術(shù) |
我最近在做實驗教程(一)[周立功,北航出版社]的實驗,做到實驗3.15時,遇到個問題,百思不得解,書也看過了. 問題是:我將選用Reloutchip生成目標,編譯連接工程后,通過JTAG下載到arm里面,復位后,那個蜂鳴器就開始叫了.(復位前,JP1是斷開的) 我的硬件跳線也設置好了:JP9短接,JP4短開,JP6設置成Bank0-rom,Bank1-ram 怎么會這樣呢: 因為按照下面的程序,P0.14應該出現(xiàn)下降沿時,那個蜂鳴器才會叫的啊,還是我連程序都沒搞懂呢?還是沒有理解中斷呢? P0.7控制那個蜂鳴器,低電平的時候響. p0.14是外部中斷輸入腳 希望各位能幫我看看,不盛感激!!!! /**************************************************************************** * 文件名:EINT1_VECT.C * 功能:使用外部中斷1進行B1的控制,每當有一次中斷時,即取反B1控制口,以便指示中斷輸入。 * 使用向量中斷方式。 * 說明:將跳線器JP9短接,JP4斷開,然后短接/斷開JP1(使EINT1為低/高電平)。 ****************************************************************************/ #include "config.h" #define BEEPCON 0x00000080 /* P0.7引腳控制B1,低電平蜂鳴 */ /**************************************************************************** * 名稱:IRQ_Eint1() * 功能:外部中斷EINT1服務函數(shù),取反B1控制口。 * 入口參數(shù):無 * 出口參數(shù):無 ****************************************************************************/ void __irq IRQ_Eint1(void) { uint32 i; i = IO0SET; // 讀取當前B1控制值 if( (i&BEEPCON)==0 ) // 控制B1輸出取反 { IO0SET = BEEPCON; } else { IO0CLR = BEEPCON; } EXTINT = 0x02; // 清除EINT1中斷標志 VICVectAddr = 0; // 向量中斷結(jié)束 } /**************************************************************************** * 名稱:main() * 功能:初始化外部中斷1(EINT1)為向量中斷,并設置為下降沿觸發(fā)模式,然后等待外部中斷。 * 說明:在STARTUP.S文件中使能IRQ中斷(清零CPSR中的I位)。 ****************************************************************************/ int main(void) { PINSEL0 = 0x20000000; // 設置管腳連接,P0.14設置為EINT1 IO0DIR = BEEPCON; // 設置B1控制口為輸出,其它I/O為輸入 EXTMODE = 0x02; // 設置EINT1中斷為邊沿觸發(fā)模式 EXTPOLAR = 0x00; // 設置EINT1中斷為下降沿觸發(fā) /* 打開EINT1中斷(設置向量控制器,即使用向量IRQ) */ VICIntSelect = 0x00000000; // 設置所有中斷分配為IRQ中斷 VICVectCntl0 = 0x2F; // 分配EINT1中斷到向量中斷0 VICVectAddr0 = (int)IRQ_Eint1; // 設置中斷服務程序地址 EXTINT = 0x02; // 清除EINT1中斷標志 VICIntEnable = 0x00008000; // 使能EINT1中斷 while(1); // 等待中斷 return(0); } |
| 2樓: | >>參與討論 |
| 作者: zlgarm 于 2006/8/2 9:45:00 發(fā)布:
Easyarm2200板子上外部中斷實驗的問題 IO0DIR = BEEPCON; // 設置B1控制口為輸出,其它I/O為輸入 IO0SET = BEEPCON; 試試在主程序加后面一句,應該可以了。建議先按試驗例程做,再在其基礎上修改,這樣進步會更明顯。 |
|
| 3樓: | >>參與討論 |
| 作者: xiaomou 于 2006/8/2 21:25:00 發(fā)布:
先謝謝周工,我再實驗一下 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |