




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、OSAL 實(shí)驗(yàn)四通過(guò) LED 接口控制 LCD 背光,hal 層 api 控制2014/3/28OSAL 是協(xié)議棧的軀干,可以理解為一個(gè)超級(jí)簡(jiǎn)單的操作系統(tǒng)http目錄前言2必要條件2原理圖2編程參考2準(zhǔn)備工作4源碼分析41http1 前言上一個(gè)實(shí)驗(yàn)中,使用了 hal 層提供的 API 函數(shù)來(lái)控制 LED 的亮滅與閃爍,那么這些API 函數(shù)是怎么實(shí)現(xiàn)的呢,本章實(shí)驗(yàn),帶領(lǐng)各位研究 LED 的驅(qū)動(dòng)函數(shù),然后添加一個(gè)LED 驅(qū)動(dòng):LCD 的背光通過(guò) LED 控制。通過(guò) hal 層的 API 接口來(lái)控制。注:本實(shí)驗(yàn)一定要使用 LCD12864 顯示屏才能用。OLED 沒(méi)有背光控制。2 必要條件A 硬件1
2、、 SmartRF 系列開(kāi)發(fā)板,CC2540 或者 CC2541 2、 CC-Debugger 仿真器B1、 IAR for 8051 開(kāi)發(fā)環(huán)境,版本:8.102、 Flash Programmer 固件燒寫(xiě)3、 Source Insight3.5 代碼閱讀。3 原理圖LCD 背光由 P0.0 控制,相同。時(shí)電亮背光,低電平時(shí)關(guān)閉背光。這和 LED觸發(fā)條件4 編程參考OSAL 實(shí)驗(yàn)中,需要參考的有兩份文檔1、 HALAPI.pdf(位于協(xié)議棧安裝目錄DriverTexas2http),對(duì)于英語(yǔ)比較好一點(diǎn)的讀者可以直接閱讀InstrumentsZStack-CC2530-2.5.1a這份英文資料
3、,這個(gè)是由 TI 提供的。還有一份中文文檔在開(kāi)發(fā)板資料0 開(kāi)始:入手開(kāi)發(fā)套件協(xié)議棧中API(中).pdf提供資料的目錄下 CC2530中文件中文翻譯HAL 驅(qū)動(dòng)2、 OSAL API.pdf(位于協(xié)議棧安裝目錄 Texas InstrumentsZStack-CC2530-2.5.1as),同樣提供資料的目錄下 CC2530 開(kāi)發(fā)板資料0 開(kāi)始:入手開(kāi)發(fā)套件協(xié)議棧中中文件中文翻譯OSAL API(中).pdf 也是一份中文文檔針對(duì) hal 層編程,因此需要閱讀 ti 提供的 hal 層 api 函數(shù)參考手冊(cè)。本節(jié),3http5 準(zhǔn)備工作這時(shí)第一次分析比較龐大的源碼,因此分析工具的選擇顯的十分重
4、要,這里使用 Source Insight3.5 來(lái)閱讀分析源碼,這一節(jié),使用 SourceInsight3.5 來(lái)創(chuàng)建一個(gè)代碼閱讀工程。SourceInsight3.5 工具在 CC2530 開(kāi)發(fā)板資料0 開(kāi)始:入手開(kāi)發(fā)套件0、工具文件夾內(nèi)。安裝在這里省略,不做詳細(xì)說(shuō)明。5.1 新建一個(gè) Source Insight 工程打開(kāi) SI,選擇 Project-New Project.輸入想要?jiǎng)?chuàng)建的 SI 工程名稱(chēng),隨便填寫(xiě)一個(gè)就好;在保存路徑中設(shè)定為你想要保存的位置,然后單擊 OK。然后會(huì)出現(xiàn)尋則要包含的源碼框,單擊 Browse.定位到的【實(shí)驗(yàn) 1 OSAL 架構(gòu)預(yù)覽】4http里的【OSAL
5、 實(shí)驗(yàn)】文件夾單擊確認(rèn),然后在單擊 OK5http源碼路徑設(shè)置之后,然后需要選擇包含哪些源碼,一般是包含所有源碼,所以選擇 Add Tree,這時(shí)就會(huì)跳出一個(gè)框,提示當(dāng)前找到了多少個(gè)源文件,選擇 OK,然后 Close。6http7http這樣,一個(gè) Source Insight 工程就創(chuàng)建 ok 了Project來(lái)打開(kāi)剛才創(chuàng)建的工程,選擇 Project-Open8http選擇剛才創(chuàng)建的工程名:SimpleOsal,然后單擊 OK,就打開(kāi)了這個(gè)工程。工程打開(kāi)后,可以通過(guò)右邊的資源管理器,找到要閱讀的源碼即可。9http6 源碼分析在 OSAL 中已經(jīng)做好的硬件抽象層 hal,已經(jīng)包括了 LE
6、D1LED3 的控制,所以幾個(gè)試驗(yàn)中,可以直接調(diào)用 hal 層的 API 函數(shù),肯定會(huì)有很多人問(wèn) hal 層的代碼是如何封裝的,如果板子上改變了 LED 的控制端口,那該如何操作呢,這一節(jié),層代碼。來(lái)教大家如何修改 hal不管做什么在修改之前必須要清楚的研究他的本質(zhì),才能不盲目,成功率高。打開(kāi)實(shí)驗(yàn)?zāi)夸浵碌?OSAL_OS 目錄下的 TestOSAL.eww IAR 工程項(xiàng)目。在 IAR 的左邊的 WORKSPACE 窗口中,點(diǎn)擊 hal 文件夾的前面的+,即可展開(kāi) OSAL 中 HAL 硬件抽象層中所有的文件。見(jiàn)下圖。10http前幾個(gè)LED 試驗(yàn)中使用的API 函數(shù)均由該文件提供。打開(kāi)該文件
7、,里面幾個(gè)重要的函數(shù),這里僅僅來(lái)分析本實(shí)驗(yàn)的目的,使用 hal 層的 led api 函數(shù)來(lái)控制 LCD 背光,所以要找到led 底層相關(guān)的代碼,然后修改他。下圖是在hal_led.c 中找到的與硬件相關(guān)的函數(shù)。由于 TI開(kāi)發(fā)板使用的四個(gè) LED(LED4 沒(méi)用用到),而的開(kāi)發(fā)板上使用的是三個(gè)可編程的 LED,因此這個(gè) LED4 就可以用來(lái)修改為控制LCD 背光。11http先看看普通的LED1 是控制的。通過(guò)文件里通過(guò)宏定義完成。,發(fā)現(xiàn) LED1LED4 的控制,是在 hal_board_cfg.h 頭12http均是通過(guò)#define HAL_TURN_ON_LED1()宏定義完成,宏定義
8、的后面又是宏定義,因此st( LED1_SBIT = LED1_POLARITY (1); )這樣的得繼續(xù)尋找。該宏定義的作用相當(dāng)于一個(gè)大括號(hào),將其中 x 代表的所有代碼包括在一起, LINE 是 iar 的宏定義,表示當(dāng)前的行號(hào),應(yīng)為行號(hào)不可能等于-1,因此這個(gè) do while 只會(huì)執(zhí)行一次,目的就是包含 x 表示的所有代碼。這樣通過(guò)分解,HAL_TURN_ON_LED1 就是 P1_0=!1,一個(gè)!為邏輯非,兩個(gè)負(fù)負(fù)得正,直接是 P1_0=1;這樣就通過(guò)么簡(jiǎn)單。,將 LED1 點(diǎn)亮了。HAL_TURN_OFF_LED1 分解后就是 P1_0=0,就這這里需要將 LED4 修改為由 P0_
9、0 控制(詳情見(jiàn) SmartRF 原理圖)。因此需要將 LED4 的宏定義修改與 LED1LED3 類(lèi)似的宏定義,代碼中 LED4 直接通過(guò)宏定義指向 LED1 了,需要修改他。13http這樣就完成了控制部分的代碼修改,但是還有一個(gè)地方要修改,就是用戶(hù)任務(wù)初始化函數(shù)。要在任務(wù)函數(shù)中處理 LED_CHANGE 事件中,添加對(duì)LED4 的閃爍控制。見(jiàn)下圖修改過(guò)后的代碼。App_Init 函數(shù)保持與實(shí)驗(yàn) 3 一樣。通過(guò)閱讀代碼發(fā)現(xiàn),OSAL 中使用了大量地預(yù)處理指令,除了 LED 還有 UART、ADC、KEY 等等。值得注意的是,在每個(gè)硬件初始化函數(shù)之前都有一個(gè)宏定義,例如 led 的,HAL_LED,只有當(dāng)定義了 HAL_LED 等于 TRUE 的時(shí)候,編譯器才將與 LED 相關(guān)的代碼編譯進(jìn) OSAL 系統(tǒng)中,否則就不會(huì)被編譯。通過(guò)使用預(yù)處理指令便可實(shí)現(xiàn)系統(tǒng)裁剪。源代碼的分析就到這里,下面源代碼進(jìn)行編譯,然后將程序燒錄到開(kāi)發(fā)板時(shí)看看現(xiàn)像是不是上述分析的那樣。通過(guò) CC-Debug 將程序燒錄到中,點(diǎn)擊全速運(yùn)行?;蛴?Flash Program 將 HEX 文件到中。具體的操作請(qǐng)查盾基礎(chǔ)篇的文檔。下面是
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校廠(chǎng)房出售合同范本
- 路面磚銷(xiāo)售合同范本
- 門(mén)面解除合同范本
- 圍墻花架施工合同范本
- 裝修材料合同范本簡(jiǎn)單
- 廢鋼球出售合同范本
- 保密協(xié)議合同范本6
- 品牌挖掘機(jī)買(mǎi)賣(mài)合同書(shū)(28篇)
- 預(yù)算執(zhí)行審計(jì)培訓(xùn)
- 預(yù)防呼吸道感染控制措施
- 電氣安全風(fēng)險(xiǎn)辨識(shí)清單
- FZ/T 97021-2009電腦織襪機(jī)
- 高考語(yǔ)文復(fù)習(xí):古詩(shī)文補(bǔ)充背誦篇目-《賀新郎·國(guó)脈微如縷》課件23張
- 內(nèi)河船舶安全檢查簡(jiǎn)要概述課件
- 中考英語(yǔ)典型陷阱題例析
- 醫(yī)院神經(jīng)外科各種顱腦引流管患者護(hù)理常規(guī)
- 一級(jí)建造師鐵路工程實(shí)務(wù)考試重點(diǎn)(掌握即可順利通過(guò))
- 意識(shí)障礙的判斷PPT精選文檔
- 家和萬(wàn)事興-善人道
- 財(cái)務(wù)用發(fā)票分割單范本
- 風(fēng)電機(jī)組現(xiàn)場(chǎng)吊裝記錄
評(píng)論
0/150
提交評(píng)論