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

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于44b0 中斷中的I_ISPC寄存器的用法

作者:ican 欄目:ARM技術(shù)
關(guān)于44b0 中斷中的I_ISPC寄存器的用法
很多書都說要在中斷服務(wù)程序中清除中斷懸掛位,也就是加上
   ;ldr        r6,=I_ISPC
    ;ldr        r7,=0x200000    ;清除外部中斷45676
    ;str        r7,[r6]
這樣寫對(duì)嗎?怎么我沒有看到有人怎么寫過?好像不能正確清除intpnd位啊,怎么回事?需要手動(dòng)清除ispc嗎?還有就是說明書里面寫ispc只能清除一次,而且會(huì)“通知中斷控制器中斷服務(wù)已經(jīng)結(jié)束了”,是什么意思?

2樓: >>參與討論
ican
為什么清除不了中斷懸掛呢?
這樣寫有錯(cuò)嗎?IsrIRQ                            ;using I_ISPR register.
    sub        sp,sp,#4            ;預(yù)留返回指針的存儲(chǔ)位置
    stmfd   sp!,{r8-r9}   
    
    
     
   

    ldr        r9,=I_ISPR
    ldr        r9,[r9]                ;載入I_ISPR

    cmp        r9, #0x0            ;If the IDLE mode work-around is used,r9 may be 0 sometimes.
    beq        %F2                    ;無可處理中斷,返回

    mov        r8,#0x0                ;r8為偏移量,清零

0
    movs    r9,r9,lsr #1        ;從右向左逐位檢驗(yàn)
    bcs        %F1
    add        r8,r8,#4            ;偏移量累加
    b        %B0    
    
   
    
                

1
    ldr        r9,=HandleADC        ;中斷處理表的首址
    add        r9,r9,r8            ;計(jì)算中斷處理表的入口地址 r9+r8,即裝載中斷處理函數(shù)的指針
    ldr        r9,[r9]                ;裝載中斷處理函數(shù)的地址
    str        r9,[sp,#8]            ;將中斷處理函數(shù)的地址存入剛才預(yù)留的位置,r8和r9的上面
    
   
      
    LDR    r0, =I_ISPC    ;清除中斷懸掛,但是一直清除不了
    LDR    r1, =BIT_EINT4567;BIT_EINT4567 EQU 0x00200000
    STR    r1, [r0]
    
  
    
    ldmfd   sp!,{r8-r9,pc}        ;出棧后,pc指向的既是中斷處理函數(shù)的地址

2
    ldmfd    sp!,{r8-r9}^        ;恢復(fù)r8,r9
    add        sp,sp,#4            ;恢復(fù)棧指針
    subs    pc,lr,#4            ;返回


3樓: >>參與討論
ican
有沒有哪位高手可以指點(diǎn)一下?
 
4樓: >>參與討論
浮云者
不懂,我只想知道原理
用的是什么原理,分析一下

5樓: >>參與討論
ican
為什么只能清除最后一位?
 intpnd寄存器是0x03200080,運(yùn)行了下面的程序后
    ldr     r0,=I_ISPC
    ldr        r1,=0x0fffffff            
    str     r1,[r0]
只能把08給清除了,變成0x03200000


6樓: >>參與討論
ican
一個(gè)很奇怪的問題啊
我在這個(gè)程序前先把所有中斷屏蔽了,然后清除intpnd,誰(shuí)知竟然把I_ISPR清除了,但是intpnd還是清除不了。
ldr     r0,=INTMSK
    ldr        r1,=0x03ffffff      ;禁止所有中斷 
    str     r1,[r0]

    ldr        r0,=I_ISPC
    ldr        r1,=0x00200000    
    str        r1,[r0] ;清除了I_ISPR,intpnd不變。搞到一打開intmsk,I_ISPR又會(huì)有中斷到來

7樓: >>參與討論
ican
救命啊,哪位高手可以指點(diǎn)一下?
 
8樓: >>參與討論
learn
由于EINT4、5、6、7共用一個(gè)中斷線

    rEXTINTPND = 0xf;        //clear EXTINTPND reg.        
    rI_ISPC = BIT_EINT4567;    //clear pending_bit


必須先清除EXTINTPND,以下是DATASHEET原文
EINT4, EINT5, EINT6, and EINT7 share the same interrupt request LINE. Therefore, the ISR (interrupt service
routine) will discriminate these four interrupt sources by reading the EXTINPND[3:0] register. EXTINPND[3:0] must
be cleared by writing a 1 in the ISR after the corresponding ISR has been completed.

9樓: >>參與討論
ican
謝謝!
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
有沒有人用過Flash仿真器
LPC2129 JTAG調(diào)試找不到ARM核心
為什么我的ADS1.2中編譯時(shí)我的偽指令不認(rèn)呢?
有沒有深入了解內(nèi)存(5)這篇文章?
新手詢問一個(gè)小程序
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)