osal实验4lcd背光控制hal层api_第1页
osal实验4lcd背光控制hal层api_第2页
osal实验4lcd背光控制hal层api_第3页
osal实验4lcd背光控制hal层api_第4页
osal实验4lcd背光控制hal层api_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OSAL 实验四通过 LED 接口控制 LCD 背光,hal 层 api 控制2014/3/28OSAL 是协议栈的躯干,可以理解为一个超级简单的操作系统http目录前言2必要条件2原理图2编程参考2准备工作4源码分析41http1 前言上一个实验中,使用了 hal 层提供的 API 函数来控制 LED 的亮灭与闪烁,那么这些API 函数是怎么实现的呢,本章实验,带领各位研究 LED 的驱动函数,然后添加一个LED 驱动:LCD 的背光通过 LED 控制。通过 hal 层的 API 接口来控制。注:本实验一定要使用 LCD12864 显示屏才能用。OLED 没有背光控制。2 必要条件A 硬件1

2、、 SmartRF 系列开发板,CC2540 或者 CC2541 2、 CC-Debugger 仿真器B1、 IAR for 8051 开发环境,版本:8.102、 Flash Programmer 固件烧写3、 Source Insight3.5 代码阅读。3 原理图LCD 背光由 P0.0 控制,相同。时电亮背光,低电平时关闭背光。这和 LED触发条件4 编程参考OSAL 实验中,需要参考的有两份文档1、 HALAPI.pdf(位于协议栈安装目录DriverTexas2http),对于英语比较好一点的读者可以直接阅读InstrumentsZStack-CC2530-2.5.1a这份英文资料

3、,这个是由 TI 提供的。还有一份中文文档在开发板资料0 开始:入手开发套件协议栈中API(中).pdf提供资料的目录下 CC2530中文件中文翻译HAL 驱动2、 OSAL API.pdf(位于协议栈安装目录 Texas InstrumentsZStack-CC2530-2.5.1as),同样提供资料的目录下 CC2530 开发板资料0 开始:入手开发套件协议栈中中文件中文翻译OSAL API(中).pdf 也是一份中文文档针对 hal 层编程,因此需要阅读 ti 提供的 hal 层 api 函数参考手册。本节,3http5 准备工作这时第一次分析比较庞大的源码,因此分析工具的选择显的十分重

4、要,这里使用 Source Insight3.5 来阅读分析源码,这一节,使用 SourceInsight3.5 来创建一个代码阅读工程。SourceInsight3.5 工具在 CC2530 开发板资料0 开始:入手开发套件0、工具文件夹内。安装在这里省略,不做详细说明。5.1 新建一个 Source Insight 工程打开 SI,选择 Project-New Project.输入想要创建的 SI 工程名称,随便填写一个就好;在保存路径中设定为你想要保存的位置,然后单击 OK。然后会出现寻则要包含的源码框,单击 Browse.定位到的【实验 1 OSAL 架构预览】4http里的【OSAL

5、 实验】文件夹单击确认,然后在单击 OK5http源码路径设置之后,然后需要选择包含哪些源码,一般是包含所有源码,所以选择 Add Tree,这时就会跳出一个框,提示当前找到了多少个源文件,选择 OK,然后 Close。6http7http这样,一个 Source Insight 工程就创建 ok 了Project来打开刚才创建的工程,选择 Project-Open8http选择刚才创建的工程名:SimpleOsal,然后单击 OK,就打开了这个工程。工程打开后,可以通过右边的资源管理器,找到要阅读的源码即可。9http6 源码分析在 OSAL 中已经做好的硬件抽象层 hal,已经包括了 LE

6、D1LED3 的控制,所以几个试验中,可以直接调用 hal 层的 API 函数,肯定会有很多人问 hal 层的代码是如何封装的,如果板子上改变了 LED 的控制端口,那该如何操作呢,这一节,层代码。来教大家如何修改 hal不管做什么在修改之前必须要清楚的研究他的本质,才能不盲目,成功率高。打开实验目录下的 OSAL_OS 目录下的 TestOSAL.eww IAR 工程项目。在 IAR 的左边的 WORKSPACE 窗口中,点击 hal 文件夹的前面的+,即可展开 OSAL 中 HAL 硬件抽象层中所有的文件。见下图。10http前几个LED 试验中使用的API 函数均由该文件提供。打开该文件

7、,里面几个重要的函数,这里仅仅来分析本实验的目的,使用 hal 层的 led api 函数来控制 LCD 背光,所以要找到led 底层相关的代码,然后修改他。下图是在hal_led.c 中找到的与硬件相关的函数。由于 TI开发板使用的四个 LED(LED4 没用用到),而的开发板上使用的是三个可编程的 LED,因此这个 LED4 就可以用来修改为控制LCD 背光。11http先看看普通的LED1 是控制的。通过文件里通过宏定义完成。,发现 LED1LED4 的控制,是在 hal_board_cfg.h 头12http均是通过#define HAL_TURN_ON_LED1()宏定义完成,宏定义

8、的后面又是宏定义,因此st( LED1_SBIT = LED1_POLARITY (1); )这样的得继续寻找。该宏定义的作用相当于一个大括号,将其中 x 代表的所有代码包括在一起, LINE 是 iar 的宏定义,表示当前的行号,应为行号不可能等于-1,因此这个 do while 只会执行一次,目的就是包含 x 表示的所有代码。这样通过分解,HAL_TURN_ON_LED1 就是 P1_0=!1,一个!为逻辑非,两个负负得正,直接是 P1_0=1;这样就通过么简单。,将 LED1 点亮了。HAL_TURN_OFF_LED1 分解后就是 P1_0=0,就这这里需要将 LED4 修改为由 P0_

9、0 控制(详情见 SmartRF 原理图)。因此需要将 LED4 的宏定义修改与 LED1LED3 类似的宏定义,代码中 LED4 直接通过宏定义指向 LED1 了,需要修改他。13http这样就完成了控制部分的代码修改,但是还有一个地方要修改,就是用户任务初始化函数。要在任务函数中处理 LED_CHANGE 事件中,添加对LED4 的闪烁控制。见下图修改过后的代码。App_Init 函数保持与实验 3 一样。通过阅读代码发现,OSAL 中使用了大量地预处理指令,除了 LED 还有 UART、ADC、KEY 等等。值得注意的是,在每个硬件初始化函数之前都有一个宏定义,例如 led 的,HAL_LED,只有当定义了 HAL_LED 等于 TRUE 的时候,编译器才将与 LED 相关的代码编译进 OSAL 系统中,否则就不会被编译。通过使用预处理指令便可实现系统裁剪。源代码的分析就到这里,下面源代码进行编译,然后将程序烧录到开发板时看看现像是不是上述分析的那样。通过 CC-Debug 将程序烧录到中,点击全速运行。或用 Flash Program 将 HEX 文件到中。具体的操作请查盾基础篇的文档。下面是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论