




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中斷與定時器實驗——10903070313_某某一、 實驗目的:(1):熟悉ARM開發板基本組成電路,并通過配套教材熟悉ARM芯片特性。了解ADS1.2軟件使用,并會用該軟件編譯調試開發板。⑵:熟悉ARM開發板中斷原理。并產生中斷。⑶:了解快速中斷和普通中斷。編寫嵌套中斷實驗。⑷:學習定時器中斷的設計方法,掌握長時間間隔的定時器的處理。⑸:進一步掌握ADS1.2集成開發環境的使用方法,以及掌握LPC2000專用工程模板的添加和使用。了解H-JTAG軟件原理,利用教材中提供的LED測試程序,完成實驗,了解應用程序的固化方法。二、 實驗內容及原理:⑴:非向量中斷使用外部中斷0實現LED點亮/熄滅控制,EasyARM2100開發試驗板上與EINT0連接的時按鍵KEY1,當按下鍵時,即可觸發外部中斷。從LP2114的數據手冊上可以看到,外部中斷0占用的VIC通道為14。⑵:向量中斷使用中斷向量控制器的向量IRQ功能,實現EINT0,EINT3中斷處理。首先把EINT0和EINT3設置下降沿觸發方式,然后設置為向量IRQ中斷,分配優先級并使能向量,最后設置相關向量地址寄存器及中斷使能:當有IRQ中斷時,VIC會將中斷向量地址放入向量地址寄存器VICVectAddr,是中斷處理能夠快速的找到相應的向量,進行IRQ處理:在IRQ處理過程中,IRQ中斷默認時被禁止的,如有需要也可以設置IRQ中斷允許,在處理完畢后寫向量地址寄存器為0,通知VIC中斷處理結束。⑶:定時器控制(查詢方式)采用11.0592MHz晶振,使用PLL部件,Fcclk=Fosc*4=11.0592MHz*4=442368MHz,外圍時鐘使用復位默認的Fpclk=fcclk/4=44.2368MHz/4=11.0592MHz,定時器進行100分頻(即PR=99),實現1S定時,定時控制LED點亮或熄滅。⑷:定時器控制(中斷方式)采用11.0592MHz晶振,使用PLL部件,Fcclk=Fosc*4=11.0592MHz*4=442368MHz,外圍時鐘使用復位默認的Fpclk=fcclk/4=44.2368MHz/4=11.0592MHz,定時器0進行100分頻(即PR=99),實現0.5S定時,定時控制LED點亮或熄滅。另外,使用定時器0的MAT0.0輸出控制LED1,設置為當比較匹配時MAT0.0輸出取反,在JTAG仿真調試時,即使停止運行程序,由于定時器仍在運行,所以MAT0.0不會停止輸出。⑸:音階演奏程序(選作)使用蜂鳴器和按鍵演奏C調音階do,re,mi,fa,so,la,ti,do(頻率分別為:261.6,293.7,329.6,349.2,392.0,440.0,493.9,523.2Hz),即:按下KEY2-->do,...,按下KEY5->fa,按下KEY1同時按下KEY2-->so,...按下KEY1同時按下KEY5-->do。沒有鍵按下時BEEP不發聲,注意頻率發生采用中斷方式,按鍵采用查詢方式。三、 實驗器材PC機一臺,周立功開發板一塊(EasyARM2100)四、 實驗預習與要求:(1) 認真復習LPC2000系列ARM7微控制器的GPIO控制機制以及LPC2100管腳連接模塊等內容。(2) 了解EasyARM2100教學實驗開發平臺的硬件結構,注意蜂鳴器的相關控制電路。(3) 了解EasyARM2100教學實驗開發平臺上的跳線。仔細閱讀附帶文檔《ADS集成開發環境及仿真器應用》或其它相關資料,了解GPIO的設置、74HC595時序、邏輯控制方法、LPC2000專用工程模板。(4) 了解非向量中斷、向量中斷與外部中斷產生運行的原理,并分析定時器以查詢方式實現與用中斷方式實現的不同點,以及優劣。(5) 了解音階與頻率的有關知識。五、 程序流程圖⑴:非向量中斷⑵:向量中斷⑶:定時器控制(查詢方式)⑷:定時器控制(中斷方式)開始設置相關引腳初始化定時器定時器中斷⑸:音階演奏程序(選作)While(1)蜂鳴器輸出頻率響聲設置蜂鳴器 輸出初始定時器設置引腳While(1)蜂鳴器輸出頻率響聲設置蜂鳴器 輸出初始定時器設置引腳按鍵開始六、實驗源程序為(C語言):⑴:非向量中斷#include"config.h"#defineLED1CON(1<<22)void—irqIRQ_Eint0(void){uint32i;i=IO0SET;if((i&LED1CON)==0){IO0SET=LED1CON;}else{IO0CLR=LED1CON;}while((EXTINT&0x01)!=0){EXTINT=0x01;}VICVectAddr=0;}intmain(void){PINSEL0=0x00000000;PINSEL1=0x00000001;IO0DIR=LED1CON;EXTMODE=0x00;VICIntSelect=0x00000000;VICDefVectAddr=(int)IRQ_Eint0;EXTINT=0x01;VICIntEnable=0x00004000;while(1);return(0);}⑵:向量中斷#include"config.h"#defineLED1CON (1<<22)#defineLED4CON (1<<25)void_irqIRQ_Eint0(void){uint32i;i=IO0SET;if((i&LED1CON)==0){IO0SET=LED1CON;}else{IO0CLR=LED1CON;}EXTINT=0x01;VICVectAddr=0x00;}void_irqIRQ_Eint3(void){uint32i;i=IO0SET;if((i&LED4CON)==0){IO0SET=LED4CON;}else{IO0CLR=LED4CON;}EXTINT=0x08;VICVectAddr=0x00;}intmain(void){PINSEL0=0x00000000;PINSEL1=0x00000000;IO0DIR=LED1CONILED4CON;EXTMODE=0x0F;EXTMODE=0x00;VICIntSelect=0x00000000;VICVectCntl0=0x20|14;VICVectAddr0=(int)IRQ_Eint();VICVectCntl1=0x20|17;VICVectAddr1=(int)IRQ_Eint();EXTINT=0x09;VICIntEnable=(1<<14)|(1<<17);while(1);return(0);}⑶:定時器控制(查詢方式)#include"config.h"#defineLEDCON(1<<25)voidTime0Init(void){TOPR=99;TOMCR=0x03;TOMRO=110592;TOTCR=0x03;TOTCR=0x01;}intmain(void){PINSEL0=0x00000000;PINSEL1=0x00000000;IO0DIR=LEDCON;Time0Init();while(1){while((TOIR&0x01)==0)TOIR=0x01;if((IO0SET&LEDCON)==0)IO0SET=LEDCON;elseIO0CLR=LEDCON;}return(0);}⑷:定時器控制(中斷方式)#include"config.h"#defineLEDCON(1<<25)void_irqIRQTime0(void){if((IO0SET&LEDCON)==0)IO0CON=LEDCON;elseIO0CLR=LEDCON;TOIR=0x02;VICVectAddr=0X00;}voidTime0Init(void){TOPR=99;TOMCR=0x03<<3;TOMR1=110592/2;TOMR0=110592/2;TOEMR=0x30;TOTCR=0x03;TOTCR=0x01;VICIntSelect=0x00;VICVectCntl0=0x24;VICVectCntl0=(uint32)IRQ_Time0;VICIntEnable=0x00000010;}intmain(void){PINSEL0=0x00000000;PINSEL1=0x00003000;IO0DIR=LEDCON;Time0Init();while(1);return(0);}⑸:音階演奏程序(選作)#include"config.h"#defineBEEP0x00000080intSUM=0;uint32PINLV[8]={262,294,330,349,392,440,494,523};uint32KEY[8]={0x00010000,0x00020000,0x00040000,0x00080000,0x00100000,0x00200000,0x00030000,0x00050000};void__irqIRQ_Time0(void){if((IO0SET&BEEP)==0)IO0SET=BEEP;elseIO0CLR=BEEP;T0IR=0x01;VICVectAddr=0x00;}voidKeyIn(void){intj=0;while(1){for(j=0;j<8;j++){if((IO0PIN&KEY[j])==0){break;}}if(j<8){break;}}SUM=j;T0PR=9;T0MCR=0x03;T0MR0=1000000/PINLV[SUM]*1.10592/2;T0TCR=0x03;T0TCR=0x01;VICIntSelect=0x00;VICVectCntl0=0x24;VICVectAddr0=(uint32)IRQ_Time0;VICIntEnable=0x00000010;while((IO0PIN&KEY[j])==0);IO0SET=BEEP;T0MCR=0x00;T0TCR=0x00;}intmain(void){PINSEL0=0x00000000;IO0DIR=BEEP;IO0SET=BEEP;while(1){KeyIn();}return1;}七、實驗步驟:㈠、找到開發板的芯片及flash計算機并口與開發板JTAG口相連接打開JTAG軟件H-JTAGServer在Flasher里面選擇autodownloado然后點擊左上角的放大鏡看是否可以找到開發板CPU。如果找到CPU,軟件界面會出現ARM7字樣以及芯片ID號。4.如果找到CPU,在flashselection里選擇LPC2114
5.configuration里設置晶振的頻率為11.0592打開H-Flasher點擊check,會出現ARM7相關字樣,證明可以找到flash㈡、編寫程序代碼仿真并驗證結果打開CodeWarriorforARMDevelopersuite編寫相應的代碼,測試沒有語法錯誤后仿真并查看運行結果,對比是否與預期的是否相同。如果與結果存在出入,檢查源程序是否存在邏輯上的錯誤,修改并知道實驗結果正確。八、實驗結果:非向量中斷實驗結果:開發試驗板上與EINT0連接的時按鍵KEY1,當按下鍵時,即可實現LED點亮/熄滅控制。向量中斷實驗結果:定時器控制(查詢方式)實驗結果:LED4每隔1s取反一次。LED燈周期性閃爍。定時器控制(中斷方式)實驗結果:每隔0.5秒LED4取反一次。音階演奏程序(選作)實驗結果:實驗板在程序驅動下周期性的按一定規律(按音階)發出不同頻率的聲響。經過實驗,實驗結果與預期結果基本吻合,表示實驗成功。九、實驗結論:在老師的講解下以及幫助下,能夠在EasyARM2100教學實驗開發平臺上完成不知規定的實驗。在這段時間的學習過程中熟悉ARM開發板中斷原理。了解快速中斷和普通中斷。能夠在與同學合作下可以編寫簡單的嵌套中斷實驗C程序。學習定時器中斷的設計方法,掌握長時間間隔的定時器的處理。了解了EasyARM2100教學實驗開發平臺的硬件結構,以及教學實驗開發平臺
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省稽陽聯誼學校2025年4月高三聯考數學試卷(含答案)
- 《人生的意義在于奉獻》課件
- 《演講的藝術》課件
- 受彎構件的其他構造要求鋼筋混凝土結構課件
- 短期合同續簽建議
- 鐵路班組管理S班組凝聚力訓練課件
- 討論照明電路能否采用三相三線制供電方式不加零線會不會出現問
- 網格橋架安裝施工方案
- 鐵路客運站車無線交互系統客運管理部分課件
- 大學生職業規劃大賽《視覺傳達設計專業》生涯發展展示
- JJF(紡織)064-2013織物防鉆絨性試驗儀(摩擦法)校準規范
- GB/T 34571-2017軌道交通機車車輛布線規則
- GB/T 11834-2011工農業機械用摩擦片
- 2023年昆明安寧市廣播電視臺(融媒體中心)招聘筆試模擬試題及答案解析
- 低壓配電箱安裝使用說明書A
- 藥品零售企業許可事項申請表模板
- 經尿道前列腺剜除術講解
- 食材配送價格表
- 物業公司xx年度收支情況公示模板
- 封條模板A4直接打印版
- 混合痔病歷范文
評論
0/150
提交評論