1初級(jí)cc253x基礎(chǔ)教程實(shí)驗(yàn)17adc五向按鍵_第1頁
1初級(jí)cc253x基礎(chǔ)教程實(shí)驗(yàn)17adc五向按鍵_第2頁
1初級(jí)cc253x基礎(chǔ)教程實(shí)驗(yàn)17adc五向按鍵_第3頁
1初級(jí)cc253x基礎(chǔ)教程實(shí)驗(yàn)17adc五向按鍵_第4頁
1初級(jí)cc253x基礎(chǔ)教程實(shí)驗(yàn)17adc五向按鍵_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、無錫谷雨電子實(shí)驗(yàn)十七ADC 實(shí)驗(yàn):五向按鍵實(shí)驗(yàn)2014/1/27在此處鍵入文檔的摘要。摘要通常是對(duì)文檔內(nèi)容的簡短總結(jié)。在此處鍵入文檔的摘要。摘要通常是對(duì)文檔內(nèi)容的簡短總結(jié)。目錄前言2必要條件2原理圖2編程參考4源碼分析96 編譯調(diào)試147 使用 Flash Programmer程序171 前言在實(shí)驗(yàn) 16 基礎(chǔ),增加了對(duì)五向按鍵的實(shí)驗(yàn)。在實(shí)驗(yàn)中五向按鍵不像平時(shí)見過到了按鍵處理。本實(shí)驗(yàn)中采用這種方法節(jié)省了大部分的引腳端口。詳細(xì)的硬件分析見原理圖部分。2 必要條件A 硬件1、 SmartRF 系列開發(fā)板,CC2530 或者 CC25312、 CC-Debugger 仿真器B1、 IAR for 8

2、051 開發(fā)環(huán)境,版本:8.102、 Flash Programmer 固件燒寫。3 原理圖五向按鍵工作方式如下:當(dāng)按鍵按向 UP 方向,五向按鍵的 COM 就會(huì)與 Up 的引腳相連。其化引腳與上述的 UP 引腳工作方式一樣。1.2.3.原理圖(見圖 3)中使用的 SN74HC32D 是一個(gè)四個(gè)或門。當(dāng)有按鍵按下時(shí),P2.0端口就會(huì)變?yōu)?。原理是這樣的,當(dāng)有按鍵按下時(shí),五向按鍵的COM,即 VCC與相應(yīng)的引腳相連,也就是將接入 SN74HC32D,即相應(yīng)引腳變?yōu)?1。沒有按鍵按下時(shí),PUSH 通過 100K 下拉電阻與參考電平相連,即相應(yīng)引腳為 0。而其它的引腳是通過集成運(yùn)放引入負(fù)反饋具有虛短的

3、功能使相應(yīng)引腳具有低電平電壓,而這些低電平正好在 SN74HC32D 的 0 電平范圍內(nèi)。這里以 up 引腳為例,來計(jì)算一下它具有的電平電壓。其計(jì)算的公式如下 3225= up31 + 3230 + 255帶入 R32,R31,R25,R30 的數(shù)值,即可知= ,而電路的工作電壓是 Vcc = 3.3V,up32所以 Vup = 0.512(V)。其他的引腳默認(rèn)電平的計(jì)算方法如上述一樣。經(jīng)計(jì)算相應(yīng)引腳的電平分別為 = 0.340(v), = 0.203(v), = 0.134(V)。再來分析一下,當(dāng)有按鍵按時(shí) P0.6 引腳上的電平電壓為變化情況。默認(rèn)情況下電路的等效為兩級(jí)同相比例運(yùn)算電路。如

4、下圖圖 1 所示。根據(jù)同相比例運(yùn)算電路的理論4.知0.6= 2.3263(V)。所以當(dāng) push 按鍵按下時(shí),ADC到的電壓就是 2.3 左右,能得到小數(shù)點(diǎn)幾位跟 ADC 的分辨率有關(guān)。如果此時(shí)按下的不是 push 按鍵,那么等效電路就會(huì)有變化。前級(jí)會(huì)變成加減法電路,后級(jí)還是同相比例運(yùn)算電路。見圖 2 所示。根據(jù)集成運(yùn)放的模擬電路知識(shí)可以得動(dòng)0.6 = 0.3417(V),其他按鍵有同樣的方法得到按下時(shí)在 P0.6 引腳產(chǎn)生的電壓,具體的計(jì)算交由用戶自行完成。所以這里有不同按鍵按下產(chǎn)生不壓的方式,來區(qū)別不同的按鍵是可行。圖 1 默認(rèn)等效電路圖 2 等效電路 2圖 3 key 原理圖4 編程參考

5、和一般的單片機(jī)一樣,為了能使 ADC 外設(shè)能正常的工作,需要對(duì)其進(jìn)行配置。配置的基礎(chǔ)也是對(duì)其相應(yīng)的寄存器進(jìn)行操作。寄存器的操作要參考其的。完整冊(cè),請(qǐng)參:CC254xEK CC2530 的中文手冊(cè)。目錄下的 CC253x4x User Guide. (Rev. C).pdf,對(duì)應(yīng)的中文手冊(cè):ADCCON3 (0Xb6) ADC 控制 3按鍵中斷的配置可以參考如下的步驟。EA = 0;PICTL &= BV(3);/設(shè)置 PORT2 上升沿中斷/清除 Port2 端口中斷標(biāo)志寄存器/清除 Port2 端口總中斷標(biāo)志P2IFG = 0X00;P2IF = 0;IP0 &= BV(1);/p2 端口中

6、端在優(yōu)先級(jí)組的 1,在這里置成最低優(yōu)先級(jí) IP1 &= BV(1);P2IEN |= BV(HAL_KEY_JOY_MOVE_PIN);IEN2 |= BV(1); /設(shè)置 PORT2 中斷使能EA = 1;ADC 的配置如實(shí)始化可以參考如下的步驟。/設(shè)置參考電壓,這里為選擇 AVDD5/設(shè)置分辨率為 8 位ADCCON3 |= 0 x80;ADCCON3 &= (0 x30);P0SEL |= BV(HAL_KEY_JOY_CHN);/選擇 p0.6 為外設(shè)引腳APCFG |= BV(HAL_KEY_JOY_CHN);/使能 AIN6 通道ADCCON3 = (ADCCON3 & 0 xF0

7、 ) | 0X06;/select ainx as input/設(shè)置 ADC 啟動(dòng)方式,這里為啟動(dòng),當(dāng) st 為 1 時(shí)開始ADCCON1 |= 0 x30;ADC 轉(zhuǎn)換ADC的結(jié)果可以參考如下的步驟。u16 read = 0;ADCCON3 = (ADCCON3 & 0 xF0 ) | 0X06;/select ainx as input asm(NOP);/啟動(dòng)轉(zhuǎn)換ADCCON1 |= BV(6);while(!(ADCCON1 & 0 x80); /等待轉(zhuǎn)換結(jié)束readread read= ADCL;+= (u= 8;16)ADCH)8;/8 為分辨率,得到的值右移 8 位,即除以 25

8、6return read;TIPS:在協(xié)議棧中,用到了非常多的宏定義函數(shù),宏定義不但能保持代碼簡介,而且代碼更容易,建議大家在編碼過程中多使用效率高的宏定義。5 源碼分析打開實(shí)驗(yàn) 17 五向按鍵實(shí)驗(yàn)ADC 工程(雙擊 Led.eww 打開)由于本實(shí)驗(yàn)的主是講五向按鍵的,所以下面的源分板就主要講 ADC 的五向按鍵。而 LCD的部分不是本節(jié)的主要內(nèi)容,在這里不做/*。* File : main.cCC2530ZIGBEE CHIP 8KRAM 256K FLASH(c) Copyright 2014,無錫谷雨電子shttp/* By: qierjinNew SmartRF 開發(fā)板* Platfo

9、rm : Ghostyu*/*說明:五向按鍵實(shí)驗(yàn),五向按鍵使用 adc 采樣,當(dāng) 5 個(gè)按鍵中的一個(gè)按下時(shí)會(huì)在P2_0 引腳產(chǎn)生一個(gè)中斷,然后ADC 通道 6 的電壓值,通過不同的電壓值來區(qū)分是哪個(gè)按鍵*/#include #includeCommon.h#includeHal_lcd.h/*五向按鍵僅使用兩個(gè) GPIO 引腳P2_0 中斷P0_6 ad 轉(zhuǎn)換*/* Joy stick move at P2.0 */#define HAL_KEY_JOY_MOVE_PORT #define HAL_KEY_JOY_MOVE_PINP20/5 向按鍵 采樣通道為 ad-6#define HAL_

10、KEY_JOY_CHN6u16 JOYSTICK_Value = 0;u8 flag=0;/*名稱:JOYSTICK_Init*功能:設(shè)置 JOYSTICk參數(shù):無*出口參數(shù):無*返回值 :無*/void JOYSTICK_Init()P2SEL &= BV(HAL_KEY_JOY_MOVE_PIN);/P2_0 設(shè)為普通 GPIOP2DIR &= BV(HAL_KEY_JOY_MOVE_PIN);/P2_0 設(shè)為輸入/*名稱:JOYSTICK_Enable*功能:使能五向按鍵的GPIO 中斷參數(shù):無*出口參數(shù):無*返回值 :無*/void JOYSTICK_Enable()EA = 0;PI

11、CTL &= BV(3);/設(shè)置 PORT2 上升沿中斷/清除 Port2 端口中斷標(biāo)志寄存器/清除 Port2 端口總中斷標(biāo)志P2IFG = 0X00;P2IF = 0;IP0 &= BV(1);/p2 端口中端在優(yōu)先級(jí)組的 1,在這里置成最低優(yōu)先級(jí) IP1 &= BV(1);P2IEN |= BV(HAL_KEY_JOY_MOVE_PIN);IEN2 |= BV(1); /設(shè)置 PORT2 中斷使能EA = 1;/*名*功稱:JOYSTICK_ADC_Init能:初始化 ADC 通道 6*參數(shù):無*出口參數(shù):無*返回值 :無*/ void JOYSTICK_ADC_Init()/設(shè)置參考電

12、壓,這里為選擇 AVDD5/設(shè)置分辨率為 8 位ADCCON3 |= 0 x80;ADCCON3 &= (0 x30);P0SEL |= BV(HAL_KEY_JOY_CHN);/選擇 p0.6 為外設(shè)引腳APCFG |= BV(HAL_KEY_JOY_CHN);/使能 AIN6 通道ADCCON3 = (ADCCON3 & 0 xF0 ) | 0X06;/select ainx as input/設(shè)置 ADC 啟動(dòng)方式,這里為啟動(dòng),當(dāng) st 為 1 時(shí) 開始 ADCADCCON1 |= 0 x30;轉(zhuǎn)換/*名稱:JOYSTICK_ADC_READ*功能:啟動(dòng) ADC 轉(zhuǎn)換,并返回 ADC*參

13、數(shù):無*出口參數(shù):無的數(shù)據(jù)*返回值 :返回 ADC 通道 6數(shù)據(jù)*/u16 JOYSTICK_ADC_READ(void)u16 read = 0;ADCCON3 = (ADCCON3 & 0 xF0 ) | 0X06;/select ainx as input asm(NOP);/啟動(dòng)轉(zhuǎn)換ADCCON1 |= BV(6);while(!(ADCCON1 & 0 x80); /等待轉(zhuǎn)換結(jié)束readread read= ADCL;+= (u16)ADCH)= 8;return read;main()HAL_BOARD_INIT();HalLcd_HW_Init();JOYSTICK_Init()

14、;JOYSTICK_Enable();JOYSTICK_ADC_Init();HalLcd_HW_WriHalLcd_HW_Wriine(HAL_LCD_LINE_1, JOYSTICK_TEST);ine(HAL_LCD_LINE_3, You Push:);for(;)if(flag =1)JOYSTICK_Value = JOYSTICK_ADC_READ();/*不同的采樣電壓對(duì)應(yīng)不同的按鍵*/if (JOYSTICK_Value = 2) & (JOYSTICK_Value = 74) & (JOYSTICK_Value = 60) & (JOYSTICK_Value = 39) &

15、 (JOYSTICK_Value = 89) & (JOYSTICK_Value = 100)HalLcd_HW_Wriine(HAL_LCD_LINE_5,CENTER);flag = 0;/*GPIO 中斷函數(shù)*/#pragma vector = P2_VECTOR errupt void P2_ISR(void)if( P2IFG & BV(HAL_KEY_JOY_MOVE_PIN) /判斷是否是 P2.0 引腳引起的中斷P2IFG &= BV(HAL_KEY_JOY_MOVE_PIN); /清除中斷標(biāo)志/采樣結(jié)果/JOYSTICK_Value = JOYSTICK_ADC_READ()

16、; 此語句不可放在這。原因?qū)⒃趯?shí)驗(yàn)資料中分析flag = 1;6 編譯調(diào)試注意,如果編譯出現(xiàn)如下錯(cuò)誤:Error:Copy protection check,No valid license found for this product24表明 IAR 未成功。如果編譯成功,就可以到開發(fā)板中運(yùn)行了。如下截圖,如果中途出現(xiàn)了錯(cuò)誤,多數(shù)是仿真器未成功連接開發(fā)板(連接后按仿真器復(fù)位,CC-Debugger 指示燈會(huì)變成綠色,表示已識(shí)別開發(fā)板),或者是仿真器驅(qū)動(dòng)沒有安裝好(到設(shè)備管理器了更新驅(qū)動(dòng))TIPS:如果 CC-Debugger 指示燈已經(jīng)變綠,但還程序出錯(cuò),這多數(shù)是由于仿真器固件受損,需要重新

17、恢復(fù)一下固件,參考 CC-Debugger 手冊(cè)。在調(diào)試的過程中,大家可以設(shè)置斷點(diǎn),然后觀察某個(gè)變量或者寄存器的值,都比較方便。如何設(shè)置斷點(diǎn)?將光標(biāo)停留在想要的語句處,然后點(diǎn)擊如下圖紅圈:,或者在語句的左邊的灰域雙擊。全速運(yùn)行到斷點(diǎn)處停止運(yùn)行,這時(shí)就可以查看當(dāng)前的運(yùn)行狀態(tài),例如變量值,寄存器狀態(tài)等。如何觀察變量?如下圖,右擊選中的變量。Add to Watch 即可。全速運(yùn)行后,可以看到開發(fā)板 LED13 輪流點(diǎn)亮的現(xiàn)象。以上就是跑馬燈工程的簡單調(diào)試。在 機(jī)程序的開發(fā)過程中,單步調(diào)試是非常有效的排,但是在后面的協(xié)議棧開發(fā)過程中,大多數(shù)情況下就不能單步調(diào)試了,一旦中斷運(yùn)行,錯(cuò)就會(huì)斷開無線連接。7

18、 使用 Flash Programmer程序在之前,快速的將程序均使用 IAR 來編寫調(diào)試程序,但很多情況下,不需要調(diào)試,需要到開發(fā)板中,然后觀察現(xiàn)象,這時(shí),就需要 Flash Programmer 燒寫工具。使用 Flash Programmer 燒寫,需要 IAR 工程設(shè)置產(chǎn)生HEX 文件。那么如何配置 IAR 產(chǎn)生 HEX 文件呢?打開工程 Options1、 如下圖:框。兩種方式打開2、 如下圖:打開 Options框如下圖,在左邊選擇 Linker,然后右邊選擇 ExtraOutput 選項(xiàng)卡,輸入對(duì)應(yīng)的名稱.hex 即可。在使用 Flash Programmer 之前,需要安裝。在的 Software/TI/SmartRF_Flash_Programmer 目錄有該程序的安裝文件,大家也可以到 TI 官網(wǎng),為:/tool/flash-programmer安裝之后,會(huì)在桌面生成一個(gè)快捷,或者在開始菜單里找到它,打開。如下圖步驟設(shè)置,注意步驟 3 中,IAR 工程產(chǎn)生的 HEX 文件位于 IAR 的工程目錄內(nèi),一般如下述結(jié)構(gòu):LedDebugExeLED 是 IAR 工程名。Debug,是 IAR 工程的配置名稱,一個(gè) IAR 工程可以包括多個(gè)配置,例如 Debug 和Release?;蛘咂渌脩糇远ǖ呐渲?。 Exe

溫馨提示

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