Ocu模块用户手册
大约 6 分钟约 1878 字2025/12/26
Ocu模块用户手册
目录
1. 简介
本模块提供了对 OCU (Output Compare Unit) 的抽象接口,利用CCP硬件资源,实现输出比较功能。主要功能包括:
- 初始化与反初始化: 通过
HLI_Ocu_Init和HLI_Ocu_DeInit对一个或多个OCU模块进行配置和资源释放。 - 通道控制: 提供
HLI_Ocu_StartChannel和HLI_Ocu_StopChannel函数,用于开启或停止指定的OCU通道。 - 比较匹配: 当定时器计数值与比较值匹配时,可执行配置的引脚动作(翻转、置高、置低)或产生中断。
- 中断回调: 提供比较匹配事件回调 (
CompareEventCallback) 和定时器溢出回调 (TimerOverFlowCallback)。
1.1 支持的设备
当前软件适用于以下芯片:
- KF32A158xxxSF
1.2 名词及缩写
| 缩写 | 解释 |
|---|---|
| MCU | 微控制器 |
| OCU | 输出比较单元 |
| CCP | 捕捉/比较/PWM模块 |
| ISR | 中断服务例程 |
2. 文件结构
| 文件名称 | 描述 |
|---|---|
| kf32axxx_hli_ocu.c | 此文件包含OCU驱动程序的通用功能 |
| kf32axxx_hli_ocu.h | 此头文件输出OCU驱动程序的类型定义和函数原型 |
| kf32axxx_hli_ocu_Lcfg.c | 链接时参数(用户需重点关注, 并根据实际应用进行修改) |
| kf32axxx_hli_ocu_Lcfg.h | 链接时参数的声明 |
| kf32axxx_hli_ocu_cfg.h | 所有宏定义、预编译参数 |
3. 数据结构
3.1 数据类型
3.1.1 宏定义
无。
3.1.2 枚举
OCU状态 (HLI_Ocu_StatusType)
枚举值 解释 HLI_OCU_STATUS_OK OCU状态OK HLI_OCU_STATUS_NOK OCU状态NOT OK OCU模块编号 (HLI_Ocu_ModuleType)
枚举值 说明 HLI_OCU_MODULE_0 OCU0 HLI_OCU_MODULE_1 OCU1 HLI_OCU_MODULE_2 OCU2 HLI_OCU_MODULE_3 OCU3 HLI_OCU_MODULE_4 OCU4 HLI_OCU_MODULE_20 OCU20 HLI_OCU_MODULE_21 OCU21 OCU通道 (HLI_Ocu_ChannelType)
枚举值 说明 HLI_OCU_CHANNEL_1 OCU通道1, 对应CCP通道1 HLI_OCU_CHANNEL_2 OCU通道2, 对应CCP通道2 HLI_OCU_CHANNEL_3 OCU通道3, 对应CCP通道3 HLI_OCU_CHANNEL_4 OCU通道4, 对应CCP通道4 HLI_OCU_CHANNEL_INVALID 无效通道 OCU引脚动作 (HLI_Ocu_PinActionType)
枚举值 说明 HLI_OCU_TOGGLE 比较匹配时,引脚电平翻转 HLI_OCU_SET_HIGH 比较匹配时,引脚输出高电平 HLI_OCU_SET_LOW 比较匹配时,引脚输出低电平 HLI_OCU_SW_INT 比较匹配时,产生软件中断(不改变引脚)
3.1.3 类型定义
无。
3.2 配置项说明
模块配置 (HLI_Ocu_ModuleConfigType)
成员 解释 取值范围 HwModule 硬件模块编号。 可选范围参考 HLI_Ocu_ModuleType。Period 定时器周期值。 16位或32位无符号整数,取决于CCP模块。 PreScaler 定时器预分频值。 16位或32位无符号整数,取决于CCP模块。 CompareEventCallback 比较匹配事件回调函数指针。 HLI_Ocu_CompareEventCallbackFcnType类型的函数指针。TimerOverFlowCallback 定时器溢出回调函数指针。 HLI_Ocu_TimerOverFlowCallbackFcnType类型的函数指针。通道配置 (HLI_Ocu_ChannelConfigType)
成员 解释 取值范围 HwModule 当前OCU通道所使用的硬件CCP模块。 可选范围参考 HLI_Ocu_ModuleType。HwChannel 当前OCU通道所使用的硬件CCP通道。 可选范围参考 HLI_Ocu_ChannelType。CompareVal 比较值。 必须小于周期值 Period。PinAction 引脚动作。 可选范围参考 HLI_Ocu_PinActionType。顶层配置 (HLI_Ocu_ConfigType)
成员 解释 取值范围 ModuleConfigPtr 指向模块配置数组的指针。 指向一个 HLI_Ocu_ModuleConfigType类型的数组。ChannelConfigPtr 指向通道配置数组的指针。 指向一个 HLI_Ocu_ChannelConfigType类型的数组。ModuleNum 配置的模块数量。 需要与 ModuleConfigPtr指向的数组元素个数一致。ChannelNum 配置的通道数量。 需要与 ChannelConfigPtr指向的数组元素个数一致。
4. 驱动函数
4.1 函数接口
4.1.1 HLI_Ocu_Init
| Name | Description |
|---|---|
| 函数名称 | HLI_Ocu_Init |
| 语法 | void HLI_Ocu_Init(const HLI_Ocu_ConfigType *ConfigPtr) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | ConfigPtr : 指向OCU配置信息的指针 |
| 返回值 | 无 |
| 描述 | 初始化所有在配置结构体中定义的OCU模块和通道。 |
| 注意事项 | 无 |
4.1.2 HLI_Ocu_DeInit
| Name | Description |
|---|---|
| 函数名称 | HLI_Ocu_DeInit |
| 语法 | void HLI_Ocu_DeInit(void) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | 无 |
| 返回值 | 无 |
| 描述 | 反初始化所有已配置的OCU模块。 |
| 注意事项 | 无 |
4.1.3 HLI_Ocu_StartChannel
| Name | Description |
|---|---|
| 函数名称 | HLI_Ocu_StartChannel |
| 语法 | HLI_Ocu_StatusType HLI_Ocu_StartChannel(HLI_Ocu_ChannelIndexType OcuChannelIndex) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | OcuChannelIndex : OCU通道索引号 |
| 返回值 | HLI_OCU_STATUS_OK : 执行成功HLI_OCU_STATUS_NOK: 执行失败 |
| 描述 | 开启指定OCU通道。 |
| 注意事项 | 通道索引号对应 HLI_Ocu_ChannelConfigType 数组中的索引。 |
4.1.4 HLI_Ocu_StopChannel
| Name | Description |
|---|---|
| 函数名称 | HLI_Ocu_StopChannel |
| 语法 | HLI_Ocu_StatusType HLI_Ocu_StopChannel(HLI_Ocu_ChannelIndexType OcuChannelIndex) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | OcuChannelIndex : OCU通道索引号 |
| 返回值 | HLI_OCU_STATUS_OK : 执行成功HLI_OCU_STATUS_NOK: 执行失败 |
| 描述 | 关闭指定OCU通道。 |
| 注意事项 | 通道索引号对应 HLI_Ocu_ChannelConfigType 数组中的索引。 |
4.2 中断回调
4.2.1 HLI_Ocu_CompareEventCallbackFcnType
| Name | Description |
|---|---|
| 函数指针名称 | HLI_Ocu_CompareEventCallbackFcnType |
| 语法 | void (*HLI_Ocu_CompareEventCallbackFcnType)(HLI_Ocu_ChannelType OcuChannel); |
| 形参(输入) | OcuChannel : 触发中断的OCU硬件通道 |
| 返回值 | 无 |
| 描述 | OCU比较匹配事件回调函数。 |
| 注意事项 | 传入的通道序号为硬件通道,非初始化时的虚拟通道配置序号。 |
4.2.2 HLI_Ocu_TimerOverFlowCallbackFcnType
| Name | Description |
|---|---|
| 函数指针名称 | HLI_Ocu_TimerOverFlowCallbackFcnType |
| 语法 | void (*HLI_Ocu_TimerOverFlowCallbackFcnType)(void); |
| 形参(输入) | 无 |
| 返回值 | 无 |
| 描述 | OCU定时器溢出回调函数。 |
| 注意事项 | 无 |
5. 使用示例
注
示例中使用的参数仅用作示例演示,应用时以实际为准。
5.1 基本输出比较
此示例展示了如何配置OCU通道以在比较匹配时翻转引脚电平,并使用回调函数。
6. 限制与假设
- 硬件资源复用: CCP模块如被用于其他功能(如ICU、PWM、GPT), 则不能作为OCU使用。
- 定时器运行: OCU功能所使用的定时器在初始化后开始计数, 在程序结束前不能手动停止。
- 通道关联: 隶属于同一模块的各通道使用同一个定时器作为计数参考, OCU通道的开启与关闭不影响定时器运行。
7. 变更记录
| 版本 | 时间 | 变更记录 |
|---|---|---|
| v1.0 | 2025-11-24 | 新增初版文档 |
