華北電力大學科技學院ARM課內實驗二_第1頁
華北電力大學科技學院ARM課內實驗二_第2頁
華北電力大學科技學院ARM課內實驗二_第3頁
華北電力大學科技學院ARM課內實驗二_第4頁
華北電力大學科技學院ARM課內實驗二_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、科技學院課程設計報告(2015 2016年度第二學期)名 稱:arm試驗定時器題 目:院 系:科技學院班級:13k2學 號:3j學生姓名:指導教師:張老師設計周數:成 績:日期:2016年5月10日實驗二:定時器/計數器(1) 計數器:實驗現象1 本次實驗是使用lpc178/177x系列cortex-m3中的定時/計數 器的計數器的計數功能,讓p0. 23管腳輸入5個下降沿,使用杜 邦線連接key1鍵和p0. 23管腳,當按下key1五次(即給了 5 個下降沿)后,led3閃爍5次。但是由于按鍵抖動的原因,觀 察到的現象可能有時不準確。2.實驗現象圖片展示二:實驗代碼分析#include .

2、/lpc177x_8x/lpc177x_8x. h #i nciude "/lpc177x_8x/type. h"#def i neled(1ul « 31)#def i neled_init()lpc_gpi03->dir |=led,led_off ()/led 初始化#def i neled_off ()lpc_gp103->set | =led/ led 滅#def ineled_on ()lpc_gpi03->clr |=led/ led 亮vo i d mydei ay (u i nt32_t uit i me) ui nt32_t

3、i;while (ui time) for (i 二 0; i < 19192; i卄);void counter i nit (vo i d) /定時器3作計算器初始化函數lpc_iocon->po_23 &二"0x07; /1111 1111 1111 1000 選擇 p023管腳 清零最低三位lpc_10c0n->p0_23 |二 0x13; /0000 0000 0001 0011 書 p160,選擇 t3_cpa0 , timer3_32 capolpc_sc->pconp |= 1 « 23;/打開定時器3的功率控制lpc_tim

4、3->ctcr 二(2 « 0) |計數器模式,下降沿捕獲(0 « 2) ; /0010, 選擇 cap3. 0lpc_tim3->tc二0;/初始化計數器值為0lpc_t i m3->tcr =0x01;/啟動計數器int main (void)u i nt32_t i;systeml n i t ();counter i n it ();led_init();while (1) if (lpc_tim3->tc 二二 5) for (i = 0; i < 10; i+) led_on ();myde i ay (400);led_off (

5、);myde i ay (400);lpc_tim3->tc = 0x00;三:通過修改某些語句從而使得led的閃爍發生變化 1通過修改 void counter in it (void)子函數中的 lpc_tim3->ctcr = (1 « 0) |(0 « 2);/*0001*/這個語句,可以使得計數器模式中的下降沿捕獲改成上升沿捕 獲。2通過修改主函數中的if (lpc_tim3-tc二二5) for (i = 0; i < 10; i+)這個語句中的tc的值可以改變計數上升沿或下降沿的個數,而 改變i的值可以改變led3閃爍的次數。(2) 捕獲功能

6、:實驗現象1 本次實驗是使用lpc178/177x系列cortex-m3中的定時/計數 器的計數器的捕獲功能,可通過查詢方式來實現定時器的捕獲功 能。也可通過查看變量方式,觀察ni的值的變化。使用杜邦線讓p0. 23管腳連接key1, p3. 31管腳連接led3。2.實驗現象圖片展示說明:h1的值是變化的,根據按鍵的時間的不同而變化,下面就 展示在實驗中的一個實例,再此說明以免誤會m值是不變的。eu in:3計伽3 03'119114042800251實驗代碼分析#include /lpc177x_8x/lpc177x_8x. h#include . /lpc177x_8x/type

7、. h,z#def i neled(1ul « 31)#def i neled_init()lpc._gpi03->dir |二led#def i neled_off ()lpc._gpi03->set |二led#def i neled_on ()lpc._gpi03->clr |=ledvoid mydelay (uint32._t ulti me)led.off ()/led 初始化/led 滅/ led 亮uint32 t i;while (uitime一) for (i = 0; i < 19192; &+);void timer3lnit

8、(void)/ 定時器3初始化函數lpc_iocon->po_23&二 0x07;lpc iocon>po 23|= 0x03;lpc sc->pc0np/timer3_32 capo打開定時器3的功率控制lpc_ti m3-prlpc_ti m3-ccr二99;/預分頻99經過100個pclk周期tc+1=2 « 0; /0010 ,設置cap3. 0下降沿捕獲lpc_ti m3-tclpc ti m3->tcr=0;二0x01 ;/啟動定時器int main (void)vol at iie u i nt32_tm = 0;systemlnit (

9、) ;/系統初始化timer3lnit ();led_init();while (1) m二(lpc_tim3->cr0%1000) ;/讀取捕獲到的值,用作延時參數led_on ();myde i ay (m) ;/m的值合適才能體驗到頻率變化led_off ();mydei ay (m);(3)中斷捕獲:實驗現象1 本次實驗是使用lpc178/177x系列cortex-m3中的定時/計數 器的計數器的捕獲功能,與上次的實驗有所不同的是,這次實驗 雖然也是通過查詢方式實現定時器的捕獲功能,但是是利用定時 /計數器中的中斷功能,使得來一個中斷(即捕獲了一個數)led 閃爍一下。也是使用杜

10、邦線讓p0. 23管腳連接key1, p3. 31管腳 連接led3o2.實驗現象圖片展示由于和第二個實驗是基本類似的功能,只是使用了中斷來捕獲, 但是實驗現象也是一樣的,所以圖片就和第二個是一樣的。-:實驗代碼分析#include . /lpc177x_8x/lpc177x_8x. h"#include ,z. . /lpc177x_8x/type. h,z#def i neled(1ul « 31)#def i neled_init()lpc_gp103->dir |二led,led_off ()/led 初始化#def i neled_off ()lpc_gp1

11、03->set |二led/led 滅#def i neled_on ()lpc_gpi03->clr |=led/led 亮voi atile ui nt32_tguicapflag = 0;/定時器捕獲中斷標志void mydei ay (u i nt32_t uit i me)uint32 t i;while (uitime) for (i = 0; i < 19192; i+);void timer3_irqhandler (void)/ timer3 中斷處理函數 lpc_tim3->ir = 1 « 4;/清除 cap3. 0 中斷標志gu i c

12、apflag = 1;void timer31nit (void)/ 定時器3初始化函數lpc_i0c0n->p0_23&二 0x07;lpc_i0c0n->p0_23|二 0x03;/timer3_32 capolpc_sc->pconp |二1 « 23;/打開定時器3的功率控制/lpc_tim3->ccr= 6 « 0; /0110,設置下降沿捕獲lpc_t i m3->ccr = 5 « 0;/0101 設置上升沿捕獲nv i c_enab lelrq(ti mer3_ i rqn) ;/設置外部中斷并使能nvic_s

13、etpriority(timer3_irqn, 3);int main (void)systemlnit () ;/系統初始化timer3lnit () ;/定時器3初始化led_init();while (1) i f (guicapflag) guicapflag = 0;/定時器捕獲中斷標志置0led_on ();mydei ay (500);led_off ();myde i ay (500);(4)匹配功能:實驗現象1 本次實驗是使用lpc178/177x系列cortex-m3中的定時/計數器的定時器1匹配輸出功能,讓p3. 30管腳輸出一個周 期為2ms,占空比為50%的方波。2.

14、實驗現象圖片展示實驗代碼分析#define led(1ul « 31)#def i neled_init()lpc_gp 103->d ir | =led#def i neled_0ff ()lpc_gpi03->set |=led#def i neled_on ()lpc_gpi03->clr |二ledled_off () /led 初始化/led 滅/led 亮/定時器捕獲中斷標志#include . /lpc177x_8x/lpc177x_8x. h #i nc i ude :. /lpc177x_8x/type. h" voi at iie ui

15、 nt32_t guicapflag 二 0; vo i d mydei ay (u i nt32_t uit i me)u i nt32_t i;while (uitime) void timerlinit (void)/ lpc_i0c0n->p3_30lpcj0c0n->p3_30for (i = 0; i < 19192; i+);定時器匹配輸出初始化&= "0x07;|= 0x03;/ timer1_16 mat1lpc_tim1->pr 二 0;/不分頻lpc_tim1->mcr =0x02«3; /00000010->

16、;00010000 設置 t1mr1 匹配后將 t1tc 復位lpc_tim1->emr =0x03«6;/00000011 -> 11000000 t1mr1 匹配后 mat1. 1 輸岀翻轉lpc_t im1->mr1 = peripheral clock / 1000;/ 除完后=0. 001s=1ms 翻轉一次,周期=2ms , 頻率控制,1毫秒后翻轉輸出占空比50%的方波lpc_tim1->tcr 二 0x01;/ 啟動并復位 dtcint main (void)systemlnit () ;/初始化目標板,切勿刪除t imer 1 i n i t

17、();whi le (1);三:通過修改某些語句從而使得輸出的方波的 周期和占空比發生變化通過改變void timerl init (void)子函數中的lpc_tim1->emr 二 0x03 « 6;lpc_tim1->mr1 = peripheralclock / 1000;語句,可使得輸 出的方波的周期和占空比發生變化。若是只改變mr1的值,則是 改變輸出方波的周期,而占空比依舊不改變。(5)中斷功能:實驗現象本次實驗是使用lpc178/177x系列cortex-m3中的定時/計數器 的中斷功能,每0. 5秒產生一個中斷,短接led3和p3. 31管腳, 使得le

18、d3每0. 5s閃爍一次。2.實驗現象圖片展示由于本次實驗和第二、三個實驗是基本類似的功能,只是使用了 中斷來讓led閃爍,實驗現象也只是0.5s閃爍一次,所以拍的 圖片就和第二個是一樣的。實驗代碼分析#include . /lpc177x_8x/lpc177x_8x. h"#i nciude . /lpc177x_8x/type. h"#def i ne led#define led_init()#define led_off()#define led_on()(1ul « 31)lpc_gp103->dir |二 ledlpc_gpi03->set

19、 |二 ledlpc_gpi03->clr |= ledled_0ff ()/ led 滅/ led 亮/ led初始化void mydelay (uint32_t uitime) u i nt32 t i:while (uitime一一) for (i = 0; i < 19192; &+);1void timero_irqhandler (void)/ ti mero 中斷處理函數lpc_t i m0-> ir= 0x01 ;/清除中斷標志if (lpc_gpi03->set&(1ul « 31) led.on() ; /原來的set若是亮

20、的(set二0)則執行else會變滅;若是滅的(set二1) 則會執行亮 eise led_off () ;/ 關閉 led/void timerolnit (void)/定時器0初始化程序lpc timo->tcrlpc timo->irlpc timo->ctcrlpc timo->tclpc timo->prlpc timo->mrolpc timo->mcr=0x02;/0000 0010=1;/清除中斷標志位=0;/定時器模式二 0;=0;/預分頻為1=peripheralclock; /除完后=1/2=0. 5s , 0.5s 中斷 1 次

21、=0x03; /0000 0011 ,匹配后產生中斷nv i c_enab i e irq (ti mero_ i rqn) ;/設置中斷并使能nv ic_setpriority(tlmero_irqn, 3);lpc_timo->tcr = 0x01;/ 啟動定時器i nt ma i n (vo i d)systeml n i t (); timeroinit();led_init();while (1)初始化目標板,切勿刪除/定時器0初始化三:通過修改某些語句從而使得定時的時間發 生變化通過改變void t imerolnit (void)子函數中的lpc_timo->mro

22、二 peripheralclock/2;語句,可使得定時時間 發生變化,例如改成 lpc_timo->mro = peripheralclock;則 定時時間變為led每1s閃爍一次。(6)定時中斷:實驗現象1 本次實驗是使用lpc178/177x系列cortex-m3中的定時/計數 器的定時產生中斷功能,定時0. 5秒產生一個中斷,短接led3 和p3. 31管腳,使得led3每0. 5s閃爍一次。2.實驗現象圖片展示由于本次實驗和第二、三個實驗是基本類似的功能,只是使用了 定時產生中斷來讓led閃爍,實驗現象也只是0. 5s閃爍一次,所以拍的圖片就和第二個是一樣的。實驗代碼分析#include ./lpc17

溫馨提示

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

評論

0/150

提交評論