|
|||||||||||
| 技術(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 |
ARMlpc2131中斷問題.請各位幫忙解答一下 |
| 作者:breeze_jt 欄目:ARM技術(shù) |
我用匯編寫了一個發(fā)送中斷的小程序,用的是LPC2131的匯編模板,直接在它的MAIN函數(shù)下填寫代碼的.具體代碼如下: MAIN ;add the user code here. 添加用戶代碼 LDR R2,=PINSEL0;設(shè)置為串口使用 MOV R3,#5 STR R3,[R2,#0] LDR R0,=U0LCR;設(shè)置波特率57600,8位的數(shù)據(jù) MOV R1,#0x80 STRB R1,[R0,#0] LDR R2,=U0DLM MOV R3,#0 STRB R3,[R2,#0] LDR R0,=U0DLL MOV R1,#3 STRB R1,[R0,#0] LDR R2,=U0LCR MOV R3,#3 STRB R3,[R2,#0] MRS R0,CPSR;使能IRQ中斷,當(dāng)前是特權(quán)模式 BIC R0,R0,#0x80 MSR CPSR_c,R0 LDR R2,=U0IER;使能發(fā)送中斷 MOV R3,#2 STRB R3,[R2,#0] LDR R0,=VICIntSelect;設(shè)置IRQ中斷和處理程序的地址,使能UART0中斷 MOV R1,#0 STR R1,[R0,#0] LDR R0,=VICVectCntl0 MOV R1,#0x26 STR R1,[R0,#0] LDR R0,=VICVectAddr0 LDR R1,=U0INTP STR R1,[R0,#0] LDR R0,=VICIntEnable MOV R1,#0x40 STR R1,[R0,#0] NOP NOP LDR R2,=U0THR;開始發(fā)送 MOV R3,#0x5F STRB R3,[R2,#0] RECLOOP NOP NOP NOP B RECLOOP LTORG U0INTP LDR R0,=U0LSR LDR R1,[R0,#0] ANDS R1,R1,#0x20 BEQ U0QUIT LDR R2,=U0THR MOV R3,#0x5F STRB R3,[R2,#0] U0QUIT LDR R0,=U0IIR LDR R1,[R0,#0] LDR R0,=VICVectAddr MOV R1,#0 STR R1,[R0,#0] SUBS PC,LR,#4 LTORG END 我是用開發(fā)板調(diào)試,是JTAG接口的,發(fā)現(xiàn)程序運行結(jié)果是只能發(fā)送一個0X5F,然后就沒有數(shù)據(jù)繼續(xù)發(fā)送.停止程序運行,就彈出對話框說地址不能讀(感覺是中斷觸發(fā)了,但是跳到不知道的地方去了).我在中斷的開始處設(shè)了一個斷點,程序一直沒有跳到中斷處. 用單步執(zhí)行跟蹤了,沒找到什么錯誤,而且中斷的地址也已經(jīng)在VICVectAddr0了. 請大家?guī)臀曳治鲆幌?問題出在哪里?用C寫就沒遇到這個問題,可能是對ARM的中斷理解上有個誤區(qū),大家點撥一下. |
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |