0x02 LiteOS_Lab仓库组件详解--Driver(上)

举报
樊心昊 发表于 2020/06/02 21:44:53 2020/06/02
【摘要】 摘要:本贴详解driver层,相信大家肯定有疑问,为啥我不说完AT层再说driver层?因为AT层就是通过调用driver层中的API来操作串口的,所以不得不在AT层的详解中先把driver层说了。编程的抽象思想我们在接到一个客户的需求时,帮客户制作一份程序,大家有没有想过“我能不能把这个客户需要的代码下次卖给其他客户,节约自己的工作量”。要如何才能将刚刚我们提出的想法实现呢?这就需要通过编...

摘要:本贴详解driver层,相信大家肯定有疑问,为啥我不说完AT层再说driver层?因为AT层就是通过调用driver层中的API来操作串口的,所以不得不在AT层的详解中先把driver层说了。

image.png

编程的抽象思想

我们在接到一个客户的需求时,帮客户制作一份程序,大家有没有想过“我能不能把这个客户需要的代码下次卖给其他客户,节约自己的工作量”。要如何才能将刚刚我们提出的想法实现呢?这就需要通过编程抽象思想来实现。

        比如说有两位客户,客户①的需求:我要在8051内核单片机上实现一个AT收发的框架;客户②的需求:我要在stm32f103单片机上实现一个AT收发的框架。那么这是我们就可以运用代码接口抽象化、模块化、降低模块与模块间耦合的思想了,将这份代码从下到上分为3层:

①串口层:用于初始化串口,将上层的数据通过串口发出。将收到的数据提供给串口,我们在更换不同类型的单片机只需要从新写这一层。

②driver层:也就是驱动层,它提供读、写、初始化等等函数给上层模块使用,上层模块操作串口和操作内存卡的感觉是一样的,通过这层完全屏蔽了底层设备的差异,所有能进行读写的设备都可以通过driver层注册并提供读、写函数即可,在更换底层设备,例如将内存卡换成u盘只要适配好内存卡硬件层和u盘硬件层,其余均不用改动。

③AT层:AT指令大家都知道,语法为AT+命令=参数、AT+命令?等,我们实现好这一层,只要调用相应函数并传入命令和参数就可以使用了。

所以所上面两位客户的需求可以共用相同的AT层和driver层,只用分别添加uart硬件层即可,就算客户后面改需求我们也不怕了,改硬件我们只需要修改硬件层(uart层)即可。

driver层中的结构体

使用结构体编程运用了面向对象的思想,把一个设备想象成对象,他有自己的属性和行为,属性对应各种变量(设备名、只读、只写等),行为对应各种函数(初始化函数、读函数、写函数等)。

image.png

driver层自身初始化

image.png

设备注册函数

设备注册有两种方式,一种是直接调用注册函数注册,另一种是调用宏定义让设备的合适的时候自动注册,先说第一种。

image.png

image.png

设备取消注册函数

image.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。