Edit online

GPIO 架构

GPIO 驱动 Driver 层采用 RT-Thread 的 PIN 设备驱动框架,如果只使用 HAL 层也可以支持 baremetal 方式的应用场景。

../images/sw_system1.png

  1. GPIO HAL 层。提供了 PinMux 和通用 GPIO 功能寄存器级的功能封装。

  2. GPIO Driver 层。

    • Rt-Thread。通用 GPIO 功能注册成 RTT Pin driver,PinMux 直接以 API 的形式提供。

    • BareMental。客户自定义 Driver 直接调用 GPIO HAL 层 Api。

RTT Pin 驱动

Rt-Thread 调用 rt_device_pin_register() 把通用 GPIO 功能注册成 Pin Driver,Pin Driver 提供了以下功能:

  • 模式配置。配置输入、输出模式,输入上下拉配置。

  • 读取端口状态。读取输入端口的电平状态。

  • 设置端口状态。配置输出端口的电平状态。

  • GPIO 中断配置。注册中断,使能中断。

因为一个系统只允许注册一个 Pin Device,所以在调用的时候除了先使用 rt_device_find() 查找 Device 的形式来调用功能,也可以直接使用一组 rt_pin_xxx() 的函数直接来调用功能。