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

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

關(guān)于中斷的問題,沒人知道嗎?

作者:kingjie 欄目:ARM技術(shù)
關(guān)于中斷的問題,沒人知道嗎?
ASM_ISR.S文件:



;-----------------------------------------------------------------------------------------------------------
;Function               ;timer1_asm_irq_handler
;Treatments             ;Timer 1 interrupt handler
;Called Fuctions        ;timer1_c_irq_handler
;Called Macros          ;IRQ_ENTRY, IRQ_EXIT
;------------------------------------------------------------------------------------------------------------
                     EXPORT         tc0_asm_irq_handler
                     IMPORT         timer1_c_irq_handler

tc0_asm_irq_handler
;Manage Exception Entry
                      IRQ_ENTRY
                      
;Call the timer Interrupt C handler
                      ldr      r1,=timer1_c_irq_handler
                      bx       r1
                       
;Manage Exception Exit
                      IRQ_EXIT                      
                      END         



中斷處理函數(shù):



void timer1_c_irq_handler(void)



{
     unsigned int DUMMY;
     
     DUMMY=*AT91C_TC1_SR;
     DUMMY=DUMMY;
     AT91C_BASE_TC1->TC_RC=46800;
     sys->AIC_IDCR=0xffffffff;//禁用中斷
     sys->AIC_ICCR=0xffffffff;//清除中斷
                                             /*Read TC1 Status Register to clear it */
     ledon();



     delay();



     ledoff()
     tc->TC_IER|=AT91C_TC_CPCS;
     sys->AIC_IECR=0x1<<AT91C_ID_TC1;
     sys->AIC_EOICR=0x1;
        
      
     //AT91F_US_Printf("\n\rhello!\r\n");   
}           



定時器發(fā)生中斷后,pc跳到tc0_asm_irq_handler,然后執(zhí)行IRQ_ENTRY,進(jìn)行現(xiàn)場保護(hù),玩了以后再跳到中斷處理函數(shù)timer1_c_irq_handler,執(zhí)行完這個函數(shù)后,pc應(yīng)該返回來執(zhí)行 IRQ_EXIT ,恢復(fù)現(xiàn)場(我是這么理解的)。現(xiàn)在的問題是我必須在中斷處理函數(shù)timer1_c_irq_handler里加上sys->AIC_EOICR=0x1;來通知內(nèi)核中斷結(jié)束,但是這個寫EOICR寄存器的指令在匯編函數(shù)IRQ_EXIT 里已經(jīng)存在了啊?如果我不在c處理函數(shù)timer1_c_irq_handler對EOICR寄存器寫操作的話,中斷只能進(jìn)一次!唯一的解釋是匯編函數(shù)IRQ_EXIT 沒有執(zhí)行。會不會和              ;Call the timer Interrupt C handler
                      ldr      r1,=timer1_c_irq_handler
                      bx       r1
bx這跳指令有關(guān)系?我看了arm匯編指令,bx好像不帶返回的跳轉(zhuǎn)指令,那么執(zhí)行完timer1_c_irq_handler這個函數(shù)以后pc也就不會返回,的人也就不能執(zhí)行IRQ_EXIT了?晌铱戳撕枚嘀袛嗟睦,都用的是這跳指令,這是為什么呢?困惑!


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
參考論壇上一個帖子用ULINK燒寫AM29LV160DB成功
借00的花送個各位,
哪位兄弟做過 EIB 總線產(chǎn)品?
電子工程師必備手冊
2007全球430day研討會暨msp430技術(shù)培訓(xùn) 14城市巡回 火熱報名中
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


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