siga s16開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)_第1頁
siga s16開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)_第2頁
siga s16開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)_第3頁
siga s16開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)_第4頁
siga s16開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)Siga-S16 FPGA 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)Rev. 1.00Rev1.00S1Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)版本Rev1.00S2版本時(shí)間作者描述Rev0.012011-6-20LuoFirst Version ReleaseSiga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)通過本篇,您可以了解到如何在 MicorBlaze 系統(tǒng)中使用定時(shí)器,如何產(chǎn)生中斷及中斷處理 ,以及 API 函數(shù)的使用和 SDK調(diào)試的一些和技巧。本文檔分為以下幾個(gè)部分:一、簡介二、硬件開發(fā)三、開發(fā)Rev1.00S

2、3Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)一、 簡介開始定時(shí)器中斷實(shí)驗(yàn)之前我們先來了解什么是定時(shí)器,什么是定時(shí)器中斷,什么是中斷處理程序,什么是中斷優(yōu)先級(jí)。定時(shí)器則是由硬件系統(tǒng)提供的一個(gè)非常的計(jì)數(shù)源。它是由主時(shí)鐘分頻后獲得的一個(gè)脈沖源來計(jì)數(shù)。定時(shí)器可以由指令來改變其工作方式、定時(shí)時(shí)間、量程、啟動(dòng)方式等。當(dāng)定時(shí)器開始計(jì)數(shù)并達(dá)到最大值(正計(jì)數(shù))或?yàn)榱悖ㄘ?fù)計(jì)數(shù))時(shí),就會(huì)產(chǎn)生溢出。當(dāng)定時(shí)器/ 計(jì)數(shù)器計(jì)溢出時(shí),就會(huì)使得相關(guān)的寄存器標(biāo)志產(chǎn)生變化,CPU由此而產(chǎn)生定時(shí)中斷,如果定時(shí)中斷使能,跳轉(zhuǎn)到中斷服務(wù)處理需要完成的任務(wù)。為使系統(tǒng)響應(yīng)并處理發(fā)生的所有中斷,系統(tǒng)根據(jù)引起中斷的重要性和緊迫程度,硬件將中斷源分

3、為若干個(gè)級(jí)別,稱作中斷優(yōu)先級(jí)。本實(shí)驗(yàn)以定時(shí)器中斷為例,為大家在MicroBlaze系統(tǒng)中如何使用定時(shí)器及定時(shí)器中斷處理的硬件開發(fā)和開發(fā)。二、硬件開發(fā)要進(jìn)行定時(shí)器的中斷,我們需要在MicroBlaze硬件系統(tǒng)中添加一個(gè)定時(shí)器和一個(gè)中斷器,這部分我們已經(jīng)在EDK建立MicroBlaze硬件系統(tǒng)的時(shí)候就添加了,如下圖紅圈所示的中斷器Interrupt和定時(shí)器Timer0:如果你的MicroBlaze的系統(tǒng)中還沒有添加這兩個(gè)器。中斷器雙擊下圖中的IP CatalogRev1.00S4Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)界面中XPS Interrupt Controller添加,

4、定時(shí)器雙擊下圖中的XPS Timer/Counter添加。再對(duì)定時(shí)器的進(jìn)行配置,在案User配置頁面中,設(shè)置Only One Timer is present保持默認(rèn)值不變。如下圖所示:為Enable,其它接下來是中斷器的配置,設(shè)置Irq信號(hào)為內(nèi)部中斷信號(hào)Interrupt_Irq,再把此信號(hào)作為MicroBlaze_0處理器的中斷輸入,使得MicroBlaze_0能夠響應(yīng)中斷如下圖紅圈處:器產(chǎn)生的中斷。設(shè)置后Rev1.00S5Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)接下去我們可以在中斷器中設(shè)置中斷優(yōu)先級(jí)。單擊下圖紅圈處。在彈出的框中, 右邊部分為已經(jīng)連接到系統(tǒng)的中斷,定時(shí)

5、器Timer0中斷和Audio_IIC中斷已經(jīng)在右邊的中斷連接列表中。如下所示:其中Audio IIC中斷優(yōu)先級(jí)比Timer0的中斷優(yōu)先級(jí)要高。用戶可以根據(jù)需要點(diǎn)擊右邊的按鈕來重新排列中斷的優(yōu)先級(jí)。Rev1.00S6Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)配置已經(jīng)完成后,需要保存工程,并重新對(duì)MicroBlaze系統(tǒng)進(jìn)行編譯和生成Bitstream文件:Hardware->Generate Bitstream.更新后的Bitstream文件到FPGA:Device Configuration -> Download Bitstream.再重新Export Har

6、dware design to SDK。Rev1.00S7Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)接下去就要進(jìn)入SDK的中斷的開發(fā)和調(diào)試階段了。三、開發(fā)為定時(shí)器中斷的測(cè)試新建一個(gè)工程:FileNewXilinxC Project在工程向?qū)Ы缑孑斎腠?xiàng)目名稱 hello_timer_int,再選擇 hello_world 工程模版。Rev1.00S8Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)選擇TargetanexistingBoardSupportPackage,如下圖的紅色圈圈部分。點(diǎn)擊Finish,完成工程向?qū)Аev1.00S9Si

7、ga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)回到SDK開發(fā)環(huán)境后在工程窗口會(huì)出現(xiàn)hello_timer_int的工程目錄:hello_timer_int的工程已經(jīng)建好了,接下去我們來編寫定時(shí)器中斷的測(cè)試程序。Rev1.00S10Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)首先我們先修改一些代碼文件helloworld.c的名字,把它重命名為hello_timer_int.c。先一下我們這次定時(shí)器中斷實(shí)驗(yàn)的內(nèi)容。首先在設(shè)置和觸發(fā)定時(shí)器,定時(shí)器開始計(jì)數(shù),當(dāng)定時(shí)到設(shè)定值溢出并產(chǎn)生定時(shí)器中斷。這時(shí)CPU會(huì)跳轉(zhuǎn)到在定時(shí)器中斷處理,在處理改變?nèi)肿兞縞ount的值。相當(dāng)于定時(shí)器發(fā)生一次中斷,cou

8、nt的數(shù)值就加1。 Count的數(shù)值會(huì)反映在開發(fā)板上的四個(gè)LED燈狀態(tài)上。接下來,我們來修改hello_timer_int.c的程序,在已經(jīng)添加了中文說明,大家能夠很容易了解每部分程序的功能。修改程序如下圖所示:Rev1.00S11Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)首先來說明紅框1的代碼,這里調(diào)用了MicroBlaze系統(tǒng)的頭文件,這些頭文件中定義了我們?cè)谑褂玫降腁PI函數(shù),我們就是通過調(diào)用這些API函數(shù)來設(shè)置或定時(shí)器,中斷器和GPIO器。另外還定義了兩個(gè)全局的變量GpioOutput和counter供程序使用。紅框2的代碼為定時(shí)器的中斷服務(wù)程序。MicroBlaze

9、如果有檢測(cè)到定時(shí)器中斷,自動(dòng)跳入到此中斷服務(wù)程序執(zhí)行。在中斷服務(wù) 話Count加1并清除Timer0的中斷標(biāo)志位。,先檢查是否是Timer0產(chǎn)生了中斷,是的紅框3的代碼是Main函數(shù)。完成中斷器的初始化,定時(shí)器的初始化和GPIO的的初始化。再進(jìn)入While的循環(huán)把count的數(shù)值反映到led的顯示上。關(guān)于代碼部分,因?yàn)槊恳徊糠侄加兄形慕忉專覀冊(cè)谶@里不做具體義可以查看siga_bsp目錄下include文件夾里的頭文件。相關(guān)的API函數(shù)的定程序修改完成后我們來Debug或運(yùn)行一下確認(rèn)效果了,運(yùn)行之前先保存工程,SDK會(huì)自動(dòng)編譯一Rev1.00S12Siga-S16 開發(fā)板之定時(shí)器中斷實(shí)驗(yàn)遍。沒有問題我們就開始運(yùn)行程序:點(diǎn)擊菜單Run Run As 1 Launch on Hardware。如果你的開發(fā)板已經(jīng)連接了器而且在EDK中已經(jīng)了Bitstream文件,你就能看到開發(fā)板上的四個(gè)LED燈每隔一定時(shí)間變化。四個(gè)LED燈的狀態(tài)就是Count的數(shù)值。如果你想讓LED燈的變化更快一些,只要改變Timer0的初始值。因?yàn)槎〞r(shí)器是配置成減數(shù)模式, 所以初始值越小,LED燈變化越快,初始值越大,LED燈變化越慢。到此為止,定時(shí)器中斷的實(shí)驗(yàn)就講完了。定時(shí)器的中斷是學(xué)習(xí)中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論