物聯(lián)網(wǎng)實(shí)驗(yàn)三_第1頁
物聯(lián)網(wǎng)實(shí)驗(yàn)三_第2頁
物聯(lián)網(wǎng)實(shí)驗(yàn)三_第3頁
物聯(lián)網(wǎng)實(shí)驗(yàn)三_第4頁
物聯(lián)網(wǎng)實(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)

文檔簡(jiǎn)介

1、華北科技學(xué)院物聯(lián)網(wǎng)技術(shù)課程實(shí)驗(yàn)報(bào)告院(系)計(jì)算機(jī)學(xué)院 專業(yè) 網(wǎng)絡(luò)工程 班級(jí) 網(wǎng)絡(luò)B12-2 組號(hào) 學(xué)號(hào) 32 姓名 周葉 實(shí)驗(yàn)室 接口與物聯(lián)網(wǎng)實(shí)驗(yàn)室 日期時(shí)間 2015.4.22 成績(jī)?cè)u(píng)定:1、完成情況: 基本操作: A( ),B( ),C( ),D( ),F( )代碼理解: A( ),B( ),C( ),D( ),F( )2、報(bào)告規(guī)范度: A( ),B( ),C( ),D( ),F( )3、學(xué)習(xí)態(tài)度: A( ),B( ),C( ),D( ),F( )成績(jī) 評(píng)閱教師 2015年4月13課程名稱物聯(lián)網(wǎng)技術(shù)實(shí)驗(yàn)項(xiàng)目名稱定時(shí)器實(shí)驗(yàn)指導(dǎo)教師陳振國(guó)同組學(xué)生姓名葉甜、孟慶鐸實(shí)驗(yàn)報(bào)告正文一、實(shí)驗(yàn)?zāi)康?通過本

2、實(shí)驗(yàn)的學(xué)習(xí),使用戶熟悉CC2530芯片的定時(shí)器T1,T3(T4和T3用法一樣)配置及中斷的產(chǎn)生和中斷服務(wù)程序的使用方法。二、實(shí)驗(yàn)原理及原理圖 CC2530有4個(gè)定時(shí)器,分別為T1、T2、T3和T4。T1為16位定時(shí)/計(jì)數(shù)器,支持輸入采樣,輸出比較和PWM輸出。T1有三個(gè)獨(dú)立的輸入采樣/輸出比較通道,每個(gè)通道對(duì)應(yīng)一個(gè)I/O口。T2為16位定時(shí)/計(jì)數(shù)器,在ZigBee 協(xié)議棧中,一般被用于給 802.15.4MAC底層提供時(shí)鐘源。T3/t4為8位定時(shí)/計(jì)數(shù)器,支持輸出比較和PWM輸出。T3/T4有2個(gè)輸出比較通道,每個(gè)通道對(duì)應(yīng)一個(gè)I/O口。 1 操作模式T1的操作模式有3種:free-runnin

3、g模式、modulo模式、up-down模式。(1) free-running模式計(jì)數(shù)器從0X0000開始計(jì)數(shù),當(dāng)計(jì)數(shù)到0XFFFF時(shí)溢出。此時(shí),IRCON.T1IF和T1STAT.OVFIF將被置1;如果TIMIF.OVFIF被置1,就會(huì)產(chǎn)生中斷請(qǐng)求。計(jì)數(shù)器復(fù)位為0X0000,重新開始計(jì)數(shù)。如圖13-1所示。圖13-1 free-running模式(2) modulo模式計(jì)數(shù)器從0X0000開始計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到最大值T1CC0時(shí)溢出。此時(shí),IRCON.T1IF和T1STAT.OVFIF將被置1;如果TIMIF.OVFIF被置1,就會(huì)產(chǎn)生中斷請(qǐng)求。計(jì)數(shù)器復(fù)位為0X0000,重新開始計(jì)數(shù)。如圖

4、13-2所示。圖13-2 modulo模式(3) up-down模式計(jì)數(shù)器從0X0000開始計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到最大值T1CC0時(shí),計(jì)數(shù)值開始遞減至0X0000。此時(shí),IRCON.T1IF和T1STAT.OVFIF將被置1;如果TIMIF.OVFIF被置1,就會(huì)產(chǎn)生中斷請(qǐng)求。計(jì)數(shù)器復(fù)位為0X0000,重新開始計(jì)數(shù)。如圖13-3所示。圖13-3 up-down模式定時(shí)器操作模式通過T1CTL控制寄存器和T1STAT狀態(tài)寄存器設(shè)置,如下表13-1和表13-2所示。表13-1 T1CTL定時(shí)器1控制寄存器T1CTL(0XE4- T1CTL定時(shí)器1控制寄存器)位名稱復(fù)位讀/寫描述7:4-0000R0 預(yù)

5、留3:2DIV1:000R/W預(yù)置分頻值。產(chǎn)生有效的時(shí)鐘沿來更新計(jì)數(shù)值00 信號(hào)頻率/101 信號(hào)頻率/810 信號(hào)頻率/3211 信號(hào)頻率/1281:0MODE1:000R/W定時(shí)器1模式選擇00 保留01 free-running模式。從0X0000到0XFFFF重復(fù)計(jì)數(shù)10 modulo模式。從0X0000到T1CC0重復(fù)計(jì)數(shù)11 up-down模式。從0X0000到T1CC0,再重T1CC0到0X0000重復(fù)計(jì)數(shù)表13-2 T1STAT定時(shí)器1狀態(tài)寄存器T1STAT(0XAF- T1STAT定時(shí)器1狀態(tài)寄存器)位名稱復(fù)位讀/寫描述7:6-00R0預(yù)留5OVFIF0R/W0定時(shí)器1計(jì)數(shù)溢

6、出中斷標(biāo)志。計(jì)數(shù)器達(dá)到溢出值(free-running或modulo模式)或者(up-down模式達(dá)到0)時(shí)置1,軟件置1無效。4CH4IF1R/W0定時(shí)器1通道4中斷標(biāo)志。當(dāng)通道4中斷條件發(fā)生時(shí),此標(biāo)志位將置1,軟件置1無效。3CH3IF0R/W0定時(shí)器1通道3中斷標(biāo)志。當(dāng)通道4中斷條件發(fā)生時(shí),此標(biāo)志位將置1,軟件置1無效。2CH2IF0R/W0定時(shí)器1通道2中斷標(biāo)志。當(dāng)通道4中斷條件發(fā)生時(shí),此標(biāo)志位將置1,軟件置1無效。1CH1IF0R/W0定時(shí)器1通道1中斷標(biāo)志。當(dāng)通道4中斷條件發(fā)生時(shí),此標(biāo)志位將置1,軟件置1無效。0CH0IF0R/W0定時(shí)器1通道0中斷標(biāo)志。當(dāng)通道4中斷條件發(fā)生時(shí),此

7、標(biāo)志位將置1,軟件置1無效。2 .通道模式定時(shí)器的通道模式有輸入采樣、輸出比較兩種。(1) 輸入采樣模式。將輸入采樣信道所對(duì)應(yīng)的I/O引腳配置為輸入狀態(tài)。定時(shí)器啟動(dòng)后,來自該輸入引腳的邊沿信號(hào)(上升沿、下降沿)將觸發(fā)當(dāng)前計(jì)數(shù)器值存儲(chǔ)到相應(yīng)的采集寄存器中。因此可以在某一外部事件發(fā)生時(shí)采集到當(dāng)前的時(shí)間。(2) 輸出比較模式。將輸出比較信道所對(duì)應(yīng)的I/O引腳配置為輸出狀態(tài)。當(dāng)計(jì)數(shù)器值等于通道比較寄存器中的值T1CCnH.T1CCnL時(shí),輸出引腳的電平會(huì)發(fā)生一定的變化,這一變化視T1CCTLn.CMP所設(shè)置的輸出比較模式而定,包括置1,復(fù)位為0和電平跳變。定時(shí)器的通道模式通過1CCTLn(通道采樣/比

8、較控制寄存器)設(shè)置,具體可參見表13-3。通過不同的操作模式和通道模式的配合使用可以實(shí)現(xiàn)PWM波的輸出。具體可參見CC2530的數(shù)據(jù)手冊(cè)。3. 定時(shí)器中斷定時(shí)器被分配了一個(gè)中斷向量,中斷請(qǐng)求既可以在計(jì)數(shù)值溢出時(shí)產(chǎn)生,也可以由輸入采樣、輸出比較事件觸發(fā)。在定時(shí)器1中斷允許的情況下,如果中斷標(biāo)志(T1CCTL0.IM、T1CCTL1.IM、T1CCTL2.IM、T1CCTL3.IM、T1CCTL4.IM和TIMIF.OVFIM)被置1,就會(huì)產(chǎn)生中斷請(qǐng)求。中斷標(biāo)志需要軟件清除。定時(shí)器中斷配置的基本步驟如下:(1) 初始化所有相關(guān)寄存器:包括T1CTL(定時(shí)器1控制寄存器)、T1STAT(定時(shí)器1狀態(tài)

9、寄存器)、T1CCTL0(定時(shí)器1的0通道采樣/比較控制寄存器)、T1CCTL1(定時(shí)器1的1通道采樣/比較控制寄存器)、T1CCTL2定時(shí)器1的2通道采樣/比較控制寄存器)、T1CCTL3定時(shí)器1的3通道采樣/比較控制寄存器)、T1CCTL4定時(shí)器1的4通道采樣/比較控制寄存器)、TIMIF(中斷標(biāo)志寄存器)等。表13-3 T1CCTL0定時(shí)器1的0通道采樣/比較控制寄存器T1CCTL0 (0XE5-T1CCTL0定時(shí)器1的0通道采樣/比較控制寄存器)位名稱復(fù)位讀/寫描述7RFIRQ0R/W如果設(shè)置,使用RF捕獲中斷來代替普通捕獲輸入6CMP2:01R/W通道0中斷標(biāo)志。置位后允許中斷請(qǐng)求。

10、5:3CMP000R/W通斷0比較模式選擇。當(dāng)計(jì)數(shù)器值等于T1CC0中的數(shù)值時(shí),選擇通道輸出的方式000 置1001 清0010 跳變011 up-down模式下,計(jì)數(shù)器值上升到T1CC0值時(shí)置1:下降到0清0100 up-down模式下,計(jì)數(shù)器值上升到T1CC0值時(shí)清0:下降到0置12MODE0R/W定時(shí)器1通道0模式選擇0 輸入采樣模式1 輸出比較模式1:0CAP1:000R/W通道0輸入采樣模式選擇00 不采用01 上升沿采樣10 下降沿采樣11 上升沿和下降沿采樣表13-4 TIMIF中斷標(biāo)志寄存器TIMIF(0XD8- TIMIF中斷標(biāo)志寄存器)位名稱復(fù)位讀/寫描述7-0R0保留6O

11、VFIM1R/W0定時(shí)器1溢出中斷標(biāo)志5T4CH1IF0R/W0定時(shí)器4通道1中斷標(biāo)志0 無中斷未決1 中斷未決4T4CH0IF0R/W0定時(shí)器4通道0中斷標(biāo)志0 無中斷未決1 中斷未決3T4OVFIF0R/W0定時(shí)器4溢出中斷標(biāo)志0 無中斷未決1 中斷未決2T3CH1IF0R/W0定時(shí)器3通道1中斷標(biāo)志0 無中斷未決1 中斷未決1T3CH0IF0R/W0定時(shí)器3通道0中斷標(biāo)志0 無中斷未決1 中斷未決0T3OVFIF0R/W0定時(shí)器3溢出中斷標(biāo)志0 無中斷未決1 中斷未決(2) 設(shè)置定時(shí)器周期(3) 定時(shí)器中斷使能(4) 啟動(dòng)定時(shí)器本實(shí)驗(yàn)在主程序中配置和開啟定時(shí)器,在定時(shí)器中斷服務(wù)程序中更新

12、OLED顯示,表明中斷的到來,OLED上顯示的“T1”對(duì)應(yīng)定時(shí)器1,“T3”對(duì)應(yīng)定時(shí)器3,其旁邊的“*”符號(hào)的閃爍表示一次定時(shí)器中斷。進(jìn)入中斷服務(wù)程序后,必須先將全局中斷允許位置0,執(zhí)行完中斷服務(wù)程序后置1,使能總中斷。三、使用的儀器、設(shè)備、材料 1.在用戶PC上(帶有Microsoft Windows XP 以上系統(tǒng)平臺(tái))正確安裝IAR Embedded Workbench forMCS-51 V7.51A 集成開發(fā)環(huán)境;2. FANTAI_ZigBee開發(fā)評(píng)估板1個(gè)(插有FANTAI_CC2530模塊);3.FANTAI-CC Debugger多功能仿真器、調(diào)試器1個(gè);4.USB電纜線1條

13、。四、實(shí)驗(yàn)步驟 1.建立一個(gè)新工程注意:本步驟,請(qǐng)用戶自行參考實(shí)驗(yàn)建立一個(gè)簡(jiǎn)單的實(shí)驗(yàn)工程,這里不再贅述。 2.添加或新建程序文件如何添加或者新建程序文件,請(qǐng)參考實(shí)驗(yàn)建立一個(gè)簡(jiǎn)單的實(shí)驗(yàn)工程,這里不再贅述。3. 配置工程設(shè)置如何配置工程設(shè)置,請(qǐng)參考實(shí)驗(yàn)建立一個(gè)簡(jiǎn)單的實(shí)驗(yàn)工程,這里不再贅述。4. 下載程序到CC2530如何下載程序到CC2530,請(qǐng)參考實(shí)驗(yàn)建立一個(gè)簡(jiǎn)單的實(shí)驗(yàn)工程,這里不再贅述。五、實(shí)驗(yàn)過程原始記錄(數(shù)據(jù)、圖標(biāo)、計(jì)算等) 本實(shí)驗(yàn)的代碼如下:程序清單:/* 文件名稱:TimerInterrupts.c * 功 能:CC2530基礎(chǔ)實(shí)驗(yàn) - 定時(shí)器中斷 * 本實(shí)驗(yàn)演示CC2530的定時(shí)器T

14、1、T3(T4與T3的用法一樣)的相關(guān)中斷用法。 * T1每隔800ms產(chǎn)生一次中斷,在OLED上的"T1"處的"*"符號(hào)閃爍一次;D1閃爍一次; * T3每隔100ms產(chǎn)生一次中斷,在OLED上的"T3"處的"*"符號(hào)閃爍一次;D3閃爍一次; * * 注 意:本實(shí)驗(yàn)中的T1和T3采用正/倒計(jì)數(shù)模式。 * * 作 者:* * 公 司: */* 包含頭文件 */*/#include "hal_board_cfg.h"#include "LCD.h"/*/* 本地變量 */*/u

15、int8 t1 = 0;uint8 t3 = 0;uint16 t1Val = 0;uint16 t3Val = 0;/*/* 宏定義 */*/* 定時(shí)器1初始化 */#define TIMER1_INIT() do T1CTL = 0x0F; /*定時(shí)器1 控制寄存器,Tick 頻率/128,正計(jì)數(shù)/倒計(jì)數(shù),從0x0000 到T1CC0,再?gòu)腡1CC0 倒計(jì)數(shù)到0x0000,反復(fù)計(jì)數(shù)*/ TIMIF = 0x40; /*定時(shí)器1/3/4 中斷屏蔽/標(biāo)志寄存器*/ while (0)/* 定時(shí)器1允許溢出中斷 */#define TIMER1_ENABLE_OVERFLOW_INT(val)

16、(TIMIF = (val) ? (TIMIF | 0x40) : (TIMIF & 0x40)/ 定時(shí)器1啟動(dòng)或關(guān)閉#define TIMER1_RUN(value) (T1STAT = (value) ? T1STAT | 0x20 : T1STAT & 0x20)/*/* 清除TIMER3中斷標(biāo)志位 */*/#define CLR_TIMER34_IF( bitMask ) TIMIF=(TIMIF&0x40)|(0x3F&(bitMask)/* 初始化定時(shí)器3宏定義 */#define TIMER34_INIT(timer) do T#timer#CTL

17、 = 0xEF; while (0)/ 定時(shí)器3使能#define TIMER3_RUN(value) (T3CTL = (value) ? T3CTL | 0x10 : T3CTL & 0x10)/*/* * 函數(shù)名稱:halSetTimer1Period * 功 能:設(shè)置定時(shí)器1定時(shí)周期 * 入口參數(shù):period 定時(shí)周期 * 出口參數(shù):無 * 返 回 值:無 */void halSetTimer1Period(uint16 period) /* 給T1CC0寫入最終計(jì)數(shù)值period */ T1CC0L = period & 0xFF; / 把period的低8位寫入T

18、1CC0L T1CC0H = (period & 0xFF00) >> 8); / 把period的高8位寫入T1CC0H/* * 函數(shù)名稱:halSetTimer3Period * 功 能:設(shè)置定時(shí)器3定時(shí)周期 * 入口參數(shù):period 定時(shí)周期 * 出口參數(shù):無 * 返 回 值:無 */void halSetTimer3Period(uint8 period) /* 給T3CC0寫入最終計(jì)數(shù)值period */ T3CC0 = period & 0xFF; / 把period值寫入T3CC0/* * 函數(shù)名稱:T1_IRQ * 功 能:定時(shí)器1中斷服務(wù)函數(shù) *

19、 入口參數(shù):無 * 出口參數(shù):無 * 返 回 值:無 */#pragma vector=T1_VECTOR_interrupt void T1_IRQ(void) EA = FALSE; if(T1STAT & 0x20) t1Val+; if(t1Val = 2) /進(jìn)入中斷次數(shù),用戶可通過修改該值來定義執(zhí)行操作時(shí)間長(zhǎng)短 t1Val = 0; if(t1) t1 = 0; LCD_WriteString(10,20,"T1:*"); HAL_TURN_ON_LED1(); else t1 = 1; LCD_WriteString(10,20,"T1:&q

20、uot;); HAL_TURN_OFF_LED1(); EA = TRUE; T1STAT &= 0x20;/* * 函數(shù)名稱:T3_IRQ * 功 能:定時(shí)器3中斷服務(wù)函數(shù) * 入口參數(shù):無 * 出口參數(shù):無 * 返 回 值:無 */#pragma vector=T3_VECTOR_interrupt void T3_IRQ(void) EA = FALSE; if(TIMIF & 0x01) t3Val+; if(t3Val = 100) /進(jìn)入中斷次數(shù),用戶可通過修改該值來定義執(zhí)行操作時(shí)間長(zhǎng)短 t3Val = 0; if(t3) t3 = 0; LCD_WriteStri

21、ng(10,30,"T3:*"); HAL_TURN_ON_LED3(); else t3 = 1; LCD_WriteString(10,30,"T3:"); HAL_TURN_OFF_LED3(); EA = TRUE; TIMIF &= 0x01;/* * 函數(shù)名稱:main * 功 能:main函數(shù)入口 * 入口參數(shù):無 * 出口參數(shù):無 * 返 回 值:無 */void main(void) HAL_BOARD_INIT();/ 設(shè)置主時(shí)鐘源為32MHz 晶體振蕩器 LCD_Init(); / LCD初始化LCD_Clear(); /

22、LCD清屏 LCD_WriteString(10,10,"Timer interrupts"); LCD_WriteString(10,20,"T1:"); LCD_WriteString(10,30,"T3:"); HAL_TURN_OFF_LED1(); / 熄滅LED_G、LED_R、LED_Y HAL_TURN_OFF_LED2(); HAL_TURN_OFF_LED3(); /由HAL_BOARD_INIT中的CLKCONCMD值為0x00,可知TICKSPD為000即32MHz /由T1CTL為0x0f,可知128分頻,UP/DOWN計(jì)數(shù)模式。 /* 使能定時(shí)器1的溢出中斷 */ TIMER1_INIT(); halSetTimer1Period(5000

溫馨提示

  • 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)論