依托面向接口编程开发思想,聚焦LED通用设计.doc
《依托面向接口编程开发思想,聚焦LED通用设计.doc》由会员分享,可在线阅读,更多相关《依托面向接口编程开发思想,聚焦LED通用设计.doc(5页珍藏版)》请在三一文库上搜索。
1、依托面向接口编程开发思想,聚焦LED通用设计周立功教授新书面向AMetal框架与接口的编程(上),对AMetal框架进行了详细介绍,通过阅读这本书,你可以学到高度复用的软件设计原则和面向接口编程的开发思想,聚焦自己的“核心域”,改变自己的编程思维,实现企业和个人的共同进步。第八章导读8.1 LED 通用接口 8.1.1 定义接口1 接口命名am_led_setam_led_onam_led_offam_led_toggle2 接口参数3 返回值 8.1.2 实现接口1 实现接口初探2 抽象的LED 设备类3 具体的LED 设备类前面定义的抽象LED 设备类中包含了两个抽象方法:pfn_led_
2、set 和pfn_led_toggle。为了使用户可以通过LED 通用接口操作LED,就必须根据实际硬件连接,实现两个抽象方法,然后将具体设备添加到系统设备链表中。下面分别以GPIO 控制LED 的驱动实现和HC595 控制LED 的驱动实现为例,阐述LED设备驱动开发的一般方法,如果后续有其它类型的LED 控制电路,可以按照此方法添加自定义的LED 驱动。(1) GPIO 控制LED 的驱动实现具体LED 设备的核心功能是实现抽象设备类中定义的方法,首先应该基于抽象设备类派生一个具体的设备类,其类图详见图8.3。图8.3 具体设备类(GPIO)可直接定义具体的LED 设备类。比如:am_le
3、d_gpio_dev_t 即为具体的LED 设备类。具有该类型后,即可使用该类型定义一个具体的LED 设备实例:在使用GPIO 控制LED 时,需要知道对应的引脚信息和LED 点亮的电平信息,为了便于修改配置,这些信息往往由用户传递给驱动。此外,还需要提供LED 设备的ID 信息,包含起始ID 和结束ID,以确定的为设备中的每个LED 分配一个唯一ID。基于此,可以将需要由用户提供的设备相关信息存放到一个新的结构体类型中,将其作为需要由用户提供的设备信息。即:对于AM824_Core 的两个板载LED 来说,若编号为01,则可以使用该类型定义其对应的设备实例信息如下为了便于通过设备直接找到对应
4、的设备信息,在设备类中往往直接维持一个指向设备信息的指针。即:显然,在使用GPIO 控制LED 前,引脚需要初始化为输出模式,此外,在完成初始化后,还需要将具体的LED 设备添加到系统中,便于使用通用接口操作LED。这些工作通常在驱动的初始化函数中完成,初始化函数的原型为:其中,p_dev 指向am_led_gpio_dev_t 类型的设备,p_info 为指向am_led_gpio_info_t 类型实例信息的指针,其调用形式如下:初始化函数的的实现详见程序清单8.12。程序清单8.12 初始化函数实现(GPIO 控制LED)程序中,首先通过LED 的起始编号和结束编号,得到了LED 的数目
5、,由于GPIO 的引脚数目与LED 数目相等,因此,也就得到了GPIO 引脚的数目。然后将所有引脚配置为了输出模式,并根据是否为低电平点亮,初始时使所有LED 处于熄灭状态。最后,通过am_led_dev_add()函数,将具体的LED 设备添加到了系统之中。在添加LED 设备时,LED 的 ID 信息直接使用了设备信息中的ID 信息,抽象方法的实现使用了_g_led_gpio_drv_funcs 中实现的方法(其定义详见程序清单8.4),p_cookie 直接设置为了指向设备自身的指针,正因为如此,在抽象方法的实现中,p_cookie 参数即为指向设备自身的指针,可以通过p_cookie 得
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 依托 面向 接口 编程 开发 思想 聚焦 LED 通用 设计
链接地址:https://www.31doc.com/p-3382313.html