<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          44B0 中斷分析(二)

          作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏




          ⑶ PC->0x0c000080處執(zhí)行的是IsrIRQ中斷識(shí)別程序。



          ⑷ 識(shí)別程序段執(zhí)行完后,轉(zhuǎn)到用戶的中斷服務(wù)程序Timer_ISR( )入口。



          4.矢量模式下的執(zhí)行過程

          OPTION.s中有_IRQ_BASEADDRESS EQU 0xc000000;

          在44BINIT中有如下定義:

          ^ (_IRQ_BASEADDRESS+0x100) ……
          HandleTIMER0 # 4
          ……

          猜測(cè)地址HandleTIMER0=_IRQ_BASEADDRESS+0x134=0x0c000134,下面來(lái)看看猜想對(duì)不對(duì)。 改rINTCON=0x1進(jìn)行矢量中斷過程的觀察,重新裝載程序,再單擊【運(yùn)行】?jī)纱魏?,Time0中斷產(chǎn)生:

          ⑴ Timer0 中斷產(chǎn)生,跳轉(zhuǎn)到中斷矢量地址 0x00000060,而不是跳轉(zhuǎn)到 IRQ中斷入口0x00000018,這就是非矢量中斷和矢量中斷的本質(zhì)區(qū)別。



          ⑵ 再跳轉(zhuǎn)到0x00000334,注意還是在Flash中,因此還得歸功于Bootloader 黑體所選程序是類似宏調(diào)用HandlerTIMER0 HANDLER HandleTIMER0產(chǎn)生的代碼,由于這是在 Flash 中,所以不可能是調(diào)試時(shí)下載進(jìn)去的。(不相信可以把44BINIT.s中的宏HandlerTIMER0 HANDLER HandleTIMER0注釋掉試試。) 執(zhí)行完0x00000348處的指令后,執(zhí)行步驟⑶。



          ⑶ 好,Bootloader完成使命后,跳轉(zhuǎn)到用戶的Timer_ISR( ),入口地址為0x0c0087d4,在44B.h中有定義:#define pISR_TIMER0 (*(unsigned *)(_IRQ_BASEADDRESS+0x134))//0x54)),可看出pISR_TIMER0和44B0INIT.h中定義的HandleTIMER0指向地址是一樣的,都指向0x0c000134。 下圖即pISR_TIMER0=(int)Timer_ISR;已經(jīng)生效的明證。



          【心得】不管是何種中斷模式,如果中斷總是沒有執(zhí)行,則可以在FLASH中的中斷分支表的相應(yīng)項(xiàng)目上設(shè)置斷點(diǎn),再然后靈活運(yùn)用STEPIN、STEPOUT、STEP等控制程序流程,以觀察問題的根源。 在匯編級(jí)代碼中設(shè)置斷點(diǎn),需要用到右鍵菜單中的【Set PC】,設(shè)置完后,不要忘記改回初始的PC值。

          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 44B0中斷分

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();