RT-Thread设备驱动开发指南
上QQ阅读APP看书,第一时间看更新

3.1 PIN层级结构

PIN的层级结构如图3-2所示。

1)应用层一般是由开发者编写的业务代码,通过调用PIN设备框架提供的统一接口完成具体的业务代码编写,如LED、蜂鸣器的驱动代码。

2)PIN设备驱动框架层和平台无关,是通用的软件层,向应用层提供统一的接口供应用层调用。PIN设备驱动框架源码是pin.c,位于RT-Thread源码的components\drivers\misc文件夹中,PIN设备驱动框架的功能有以下两点。

①PIN设备驱动框架向应用层提供PIN设备管理接口,即rt_pin_read、rt_pin_write、rt_pin_mode等(接口名均使用rt_前缀),应用程序使用这些接口来操作硬件引脚。

②PIN设备驱动框架向PIN设备驱动提供PIN设备操作方法接口struct rt_pin_ops(具体如pin_get、pin_mode、pin_write、pin_read、pin_attach_irq、pin_detach_irq、pin_irq_enable),PIN设备驱动需要实现这些接口。除此之外,该层还向PIN设备驱动提供PIN设备注册接口rt_device_pin_register, PIN设备驱动需要调用该接口进行设备注册。

3)PIN设备驱动层的实现与具体硬件平台相关,通过调用厂商提供的库函数或寄存器来操作具体的硬件GPIO口。PIN设备驱动源码文件drv_gpio.c放置在具体的BSP目录下,与BSP相关。PIN设备驱动需要实现PIN设备的操作方法接口struct rt_pin_ops,这些操作方法提供了访问和控制PIN硬件的能力。该驱动也负责调用rt_device_pin_register函数来注册PIN设备到操作系统中。

图3-2 PIN层级结构图

4)最下面一层是与硬件GPIO口相连接的常用模块,有LED、按键、蜂鸣器等。

我们再来看一下PIN设备驱动的具体开发步骤。PIN设备驱动开发主要任务是实现PIN设备操作方法rt_pin_ops,然后注册PIN设备。驱动文件一般命名为drv_gpio.c。本章将会以STM32的PIN设备驱动为例讲解PIN驱动的具体实现。