API GUIDE / GPIO / OVERVIEW

G32S10 GPIO API 概述

模块概述:本文档定义 G32S10 SDK 当前 GPIO 模块的正式接口,覆盖以下两层:

1. 文档范围

本文档定义 G32S10 SDK 当前 GPIO 模块的正式接口,覆盖以下两层:

  • HAL GPIO:面向 BSP、驱动适配层和业务模块的功能级接口

  • LL GPIO:面向寄存器与位操作的低层接口

本文档基于以下实现与头文件编写:

  • code/include/drivers/g32s10/gpio/hal_gpio.h

  • code/include/drivers/g32s10/gpio/ll_gpio.h

  • code/include/drivers/g32s10/gpio/gpio_regs.h

  • code/drivers/g32s10/gpio/hal_gpio.c

2. 分层关系

APPLICATION  Application / BSP / Driver  业务代码、板级支持与示例入口
↓
HAL  HAL GPIO  模块级配置、状态管理与硬件访问
↓
LL  LL GPIO  寄存器访问与字段级控制
↓
HARDWARE REGISTERS  GPIO Registers  实例地址、寄存器布局与位域定义

分层职责如下:

  • HAL GPIO

    • 封装 GPIO 功能选择、属性配置、初始化生命周期和中断管理

    • 维护软件态 pin 占用信息与中断上下文

  • LL GPIO

    • 提供寄存器位级访问入口

    • 不维护软件状态,不处理业务语义

  • gpio_regs.h

    • 定义 GPIO 实例、pin mask、寄存器布局和基础辅助函数

3. 当前实现约束与行为说明

3.1 GPIOE 的 pad 属性能力受限

当前实现中:

  • GPIOE 不支持 drive_strength

  • GPIOE 不支持 speed

  • GPIOE 不支持 schmitt

因此:

  • 对 GPIOE 配置非默认驱动能力会返回 IM_ERR_UNSUPPORTED

  • 对 GPIOE 配置 HAL_GPIO_SPEED_HIGH 会返回 IM_ERR_UNSUPPORTED

  • 对 GPIOE 使能 schmitt = true 会返回 IM_ERR_UNSUPPORTED

3.2 hal_gpio_write_pin() 与 hal_gpio_toggle_pin() 的模式保护

  • hal_gpio_write_pin() 与 hal_gpio_toggle_pin() 会检查目标 pin 是否已处于 GPIO 输出模式

  • 对复用功能 pin、输入 pin 或中断 pin 执行此类操作会返回 IM_ERR_UNSUPPORTED

4. 推荐关注的错误码

错误码含义
IM_OK操作成功
IM_ERR_INVALID_PARAM输入参数非法,或参数组合不满足接口约束
IM_ERR_UNSUPPORTED当前端口能力、当前功能模式或当前寄存器状态不支持目标操作
IM_ERR_NOT_READYpin 未登记,或上下文尚未建立
IM_ERR_BUSY资源已被占用