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

          新聞中心

          DSP芯片TMS320f2812的外中斷

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

          一.實(shí)驗(yàn)?zāi)康?br />1.通過(guò)實(shí)驗(yàn)熟悉F2812A的響應(yīng)過(guò)程。
          2.學(xué)會(huì)C語(yǔ)言程序設(shè)計(jì),以及運(yùn)用程序控制程序流程。
          二.實(shí)驗(yàn)原理
          1.中斷及中斷處理過(guò)程
          (1)中斷簡(jiǎn)介
          中斷是一種由硬件或軟件驅(qū)動(dòng)的信號(hào),在接到此信號(hào)時(shí),將當(dāng)前程序懸掛起來(lái),
          轉(zhuǎn)向去執(zhí)行另外一個(gè)任務(wù),稱(chēng)為中斷服務(wù)程序(ISR)。TMS320f28x 可支持32 個(gè)ISR,
          可由硬件或軟件觸發(fā)。
          所有的C28x 中斷,可以分成可屏蔽中斷和不可屏蔽中斷兩種,軟件中斷是不可屏蔽的。
          (2)處理中斷的步驟
          ①接收中斷請(qǐng)求。請(qǐng)求由軟件或硬件發(fā)出。
          ②響應(yīng)中斷請(qǐng)求。對(duì)于可屏蔽中斷,需要滿(mǎn)足若干條件,才發(fā)生響應(yīng);而對(duì)于不可屏蔽中
          斷,則立即響應(yīng)。
          ③準(zhǔn)備執(zhí)行中斷服務(wù)程序。
          -完成當(dāng)前正在執(zhí)行的指令;將進(jìn)入流水線(xiàn)但還未解碼的指令清除。
          -自動(dòng)保存若干寄存器的值到數(shù)據(jù)堆棧和系統(tǒng)堆棧。
          -取得用戶(hù)定義的中斷向量表中當(dāng)前中斷向量,中斷向量指向中斷服務(wù)程序入口。
          ④執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序包含中斷返回指令,這樣返回時(shí)可以出棧以前保存的
          關(guān)鍵寄存器數(shù)據(jù),從而恢復(fù)中斷服務(wù)程序執(zhí)行前的現(xiàn)場(chǎng)。
          (4)外中斷
          可以響應(yīng)兩個(gè)外中斷。
          2.ICETEK-CTR板的鍵盤(pán)接口
          顯示/控制模塊ICETEK-CTR通過(guò)接口P8連接小鍵盤(pán),接收小鍵盤(pán)傳送的掃描碼,并在
          每個(gè)掃描碼結(jié)束后保存,同時(shí)向DSP的XINT2 發(fā)送中斷信號(hào);當(dāng)DSP讀鍵盤(pán)時(shí)將掃描碼送到
          數(shù)據(jù)總線(xiàn)上。小鍵盤(pán)上每次按下一個(gè)鍵將產(chǎn)生2個(gè)掃描碼、2 次中斷。
          3.程序編制
          由一個(gè)不含中斷處理程序的工程通過(guò)改寫(xiě)加入中斷處理程序部分大致需要如下操作(假設(shè)
          使用INT2):
          (1)編制中斷服務(wù)程序:可以用C語(yǔ)言程序?qū)崿F(xiàn)(參見(jiàn)實(shí)驗(yàn)程序),編寫(xiě)單獨(dú)的一個(gè)函數(shù)XINT,
          此函數(shù)使用interrupt 修飾,沒(méi)有參數(shù)和返回值。
          (2)構(gòu)造中斷向量表:程序中“InitPieVectTable();”是初始化向量表,
          “PieVectTable.XINT2 = XINT2_isr;”把中斷服務(wù)程序和向量表該中斷對(duì)應(yīng)起來(lái)。
          (3)主程序中進(jìn)行初始化設(shè)置:使能中斷,清中斷等。
          4.實(shí)驗(yàn)程序流程圖(如下圖9-1所示):

          本文引用地址:http://www.ex-cimer.com/article/150624.htm

          圖9-1 程序流程圖
          三.實(shí)驗(yàn)設(shè)備
          計(jì)算機(jī),ICETEK-F2812-EDU實(shí)驗(yàn)箱(或ICETEK 仿真器+ICETEK-F2812-A系統(tǒng)板+相關(guān)連
          線(xiàn)及電源)。
          四.實(shí)驗(yàn)內(nèi)容與步驟
          1.實(shí)驗(yàn)準(zhǔn)備
          (1)連接實(shí)驗(yàn)設(shè)備:請(qǐng)參看本書(shū)第一部分、二。
          (2)連接實(shí)驗(yàn)箱附帶的鍵盤(pán)的PS2插頭到ICETEK-CTR的“鍵盤(pán)接口”P8。
          (3)將ICETEK-CTR板的供電電源開(kāi)關(guān)撥動(dòng)到“開(kāi)”的位置。
          2.設(shè)置Code Composer Studio 2.21在硬件仿真(Emulator)方式下運(yùn)行
          請(qǐng)參看本書(shū)第一部分、四、2。
          3.啟動(dòng)Code Composer Studio 2.21:請(qǐng)參看本書(shū)第一部分、五、2。
          選擇菜單Debug→Reset CPU。
          4.打開(kāi)工程文件
          工程目錄:C:ICETEK-F2812-A-EDUlabDSP281x_examplesLab0304-Xintxint.pjt
          瀏覽xint.c文件的內(nèi)容,理解各語(yǔ)句作用。
          5.編譯、下載程序。
          6.運(yùn)行程序,觀(guān)察結(jié)果。
          運(yùn)行程序,按一下小鍵盤(pán)上任意一個(gè)鍵,注意觀(guān)察ICETEK-CTR板上指示燈閃爍的情況。
          7.觀(guān)察中斷函數(shù)的執(zhí)行
          選擇“Debug”菜單中“Halt”暫停運(yùn)行程序,在XINT2 中斷程序中的語(yǔ)句上加軟件斷
          點(diǎn),重新運(yùn)行程序(選擇“Debug”菜單中“Run”),觀(guān)察何時(shí)程序停留在斷點(diǎn)上。
          8.退出CCS
          五.預(yù)習(xí)要求
          1.了解F2812A的中斷響應(yīng)過(guò)程。

          2.了解C語(yǔ)言中斷程序設(shè)計(jì)。
          六.注意事項(xiàng)
          本實(shí)驗(yàn)要注意連接實(shí)驗(yàn)箱的連接。
          七.思考題
          修改程序完成按鍵中斷控制的指示燈依次逐一點(diǎn)亮功能。
          八.實(shí)驗(yàn)報(bào)告要求
          1.說(shuō)明該實(shí)驗(yàn)中,每次按下鍵盤(pán)均會(huì)發(fā)生幾次中斷?
          2.說(shuō)明該實(shí)驗(yàn)中產(chǎn)生連續(xù)的中斷的條件。
          3.說(shuō)明xint2 中斷函數(shù)被執(zhí)行的條件。



          關(guān)鍵詞: 中斷 TMS320f2812 芯片 DSP

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();