Dio模块用户手册
大约 6 分钟约 1793 字2025/12/26
Dio模块用户手册
目录
1. 简介
本模块提供了对 DIO (Digital Input/Output) 的抽象接口,用于实现对MCU通用IO引脚的读、写和状态翻转等基本操作。它还包括了配置和管理引脚外部中断的功能。
1.1 支持的设备
当前软件适用于以下芯片:
- KF32A158xxxSF
1.2 名词及缩写
| 缩写 | 解释 |
|---|---|
| MCU | 微控制器 |
| DIO | 数字输入输出 |
| ISR | 中断服务例程 |
2. 文件结构
| 文件名称 | 描述 |
|---|---|
| kf32axxx_hli_dio.c | 此文件包含DIO驱动程序的通用功能 |
| kf32axxx_hli_dio.h | 此头文件输出DIO驱动程序的宏、类型定义和函数原型 |
| kf32axxx_hli_dio_cfg.h | 此文件包含DIO模块相关配置及宏定义 |
3. 数据结构
3.1 数据类型
3.1.1 宏定义
DIO引脚定义
宏定义名称 解释 DIO_CHANNEL_A_0 ~ DIO_CHANNEL_A_15 PA0~PA15 DIO_CHANNEL_B_0 ~ DIO_CHANNEL_B_15 PB0~PB15 DIO_CHANNEL_C_0 ~ DIO_CHANNEL_C_15 PC0~PC15 DIO_CHANNEL_D_0 ~ DIO_CHANNEL_D_15 PD0~PD15 DIO_CHANNEL_E_0 ~ DIO_CHANNEL_E_15 PE0~PE15 DIO_CHANNEL_F_0 ~ DIO_CHANNEL_F_15 PF0~PF15 DIO_CHANNEL_G_0 ~ DIO_CHANNEL_G_15 PG0~PG15 DIO_CHANNEL_H_0 ~ DIO_CHANNEL_H_15 PH0~PH15
3.1.2 枚举
引脚输出电平 (HLI_Dio_LevelType)
枚举值 解释 HLI_LOW 引脚输出低 HLI_HIGH 引脚输出高 外部触发中断类型 (HLI_Dio_PinEintType)
枚举值 解释 HLI_EINT_RISE 上升沿触发 HLI_EINT_FALL 下降沿触发 HLI_EINT_HIGH 高电平触发 HLI_EINT_LOW 低电平触发 HLI_EINT_BOTH_EDGE 双边沿触发
3.1.3 类型定义
无。
3.2 配置项说明
本模块无配置结构体,引脚功能通过 Port 模块进行配置。
4. 驱动函数
4.1 函数接口
4.1.1 HLI_Dio_WritePin
| Name | Description |
|---|---|
| 函数名称 | HLI_Dio_WritePin |
| 语法 | void HLI_Dio_WritePin(HLI_Dio_ChannelType ChannelId, HLI_Dio_LevelType Level) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | ChannelId : Dio通道序号 |
| 形参(输入) | Level: 要设置的电平状态 (HLI_LOW 或 HLI_HIGH) |
| 返回值 | 无 |
| 描述 | 设置指定Dio通道的电平状态。 |
| 注意事项 | 调用此函数前,必须通过 Port 模块将对应引脚初始化为GPIO输出模式。 |
4.1.2 HLI_Dio_ReadPin
| Name | Description |
|---|---|
| 函数名称 | HLI_Dio_ReadPin |
| 语法 | HLI_Dio_LevelType HLI_Dio_ReadPin(HLI_Dio_ChannelType ChannelId) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | ChannelId : Dio通道序号 |
| 返回值 | HLI_Dio_LevelType: 返回当前引脚的电平状态 (HLI_LOW 或 HLI_HIGH)。 |
| 描述 | 读取并返回指定Dio通道的电平状态。 |
| 注意事项 | 调用此函数前,必须通过 Port 模块将对应引脚初始化为GPIO输入模式。 |
4.1.3 HLI_Dio_TogglePin
| Name | Description |
|---|---|
| 函数名称 | HLI_Dio_TogglePin |
| 语法 | void HLI_Dio_TogglePin(HLI_Dio_ChannelType ChannelId) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | ChannelId : Dio通道序号 |
| 返回值 | 无 |
| 描述 | 翻转指定Dio通道的电平状态。 |
| 注意事项 | 调用此函数前,必须通过 Port 模块将对应引脚初始化为GPIO输出模式。 |
4.1.4 HLI_Dio_PinEintEnable
| Name | Description |
|---|---|
| 函数名称 | HLI_Dio_PinEintEnable |
| 语法 | void HLI_Dio_PinEintEnable(HLI_Dio_ChannelType ChannelId, HLI_Dio_PinEintType Mode) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | ChannelId : Dio通道序号 |
| 形参(输入) | Mode: 外部中断触发类型 |
| 返回值 | 无 |
| 描述 | 配置并使能指定引脚的外部中断。 |
| 注意事项 | 1. 弱定义的回调函数为HLI_Dio_EintCallback。2. 必须在 kf32axxx_hli_irq_cfg.h 中使能对应Port的统一中断(例如 PA_UNIFIED_INTERRUPT)。 |
4.1.5 HLI_Dio_PinEintDisable
| Name | Description |
|---|---|
| 函数名称 | HLI_Dio_PinEintDisable |
| 语法 | void HLI_Dio_PinEintDisable(HLI_Dio_ChannelType ChannelId) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | ChannelId : Dio通道序号 |
| 返回值 | 无 |
| 描述 | 关闭指定引脚的外部中断。 |
| 注意事项 | 无 |
4.2 中断回调
4.2.1 中断处理流程
Dio模块的外部中断功能与Port模块紧密相关。当中断发生时,其处理流程如下:
- 硬件触发:外部信号触发了已配置为中断的引脚。
- Port模块ISR:CPU跳转到Port模块中预设的中断服务例程(ISR),例如
_PA_exception。 - 回调函数调用:在Port模块的ISR中,会调用在Dio模块中弱定义的
HLI_Dio_EintCallback函数,并将触发中断的通道ID作为参数传入。 - 用户逻辑:用户需要在应用程序中重新实现
HLI_Dio_EintCallback函数,以执行具体的中断处理逻辑。
graph TD
A[硬件中断触发] --> B{Port模块中断服务例程};
B --> C[调用 HLI_Dio_EintCallback];
C --> D[用户实现的具体中断处理逻辑];4.2.2 HLI_Dio_EintCallback
| Name | Description |
|---|---|
| 函数名称 | HLI_Dio_EintCallback |
| 语法 | void HLI_Dio_EintCallback(HLI_Dio_ChannelType ChannelId) |
| 形参(输入) | ChannelId : 触发中断的Dio通道序号 |
| 返回值 | 无 |
| 描述 | 引脚外部中断回调函数。 |
| 注意事项 | 本函数为弱定义函数,用户需要重新定义此函数以实现具体的中断处理逻辑。 |
5. 使用示例
注
示例中使用的参数仅用作示例演示,应用时以实际为准。
1. 基本IO操作
此示例展示了如何初始化一个引脚为输出,并对其进行读写操作。
2. 外部中断配置
此示例展示了如何配置一个引脚以响应外部中断。
6. 限制与假设
- 依赖于Port模块:Dio模块的所有功能都依赖于Port模块。在使用Dio模块的任何函数之前,必须首先使用Port模块对相应的引脚进行初始化,将其配置为GPIO输入或输出模式。
- 中断使用:要使用外部中断功能,除了调用
HLI_Dio_PinEintEnable外,还必须在kf32axxx_hli_irq_cfg.h中使能对应Port的统一中断(例如PA_UNIFIED_INTERRUPT),并实现HLI_Dio_EintCallback函数。
7. 变更记录
| 版本 | 时间 | 变更记录 |
|---|---|---|
| v1.0 | 2025.11.20 | 新增初版文档 |
