Gpt模块用户手册
大约 6 分钟约 1797 字2025/12/26
Gpt模块用户手册
目录
1. 简介
本模块提供了对 GPT (General Purpose Timer) 通用定时器 的抽象接口,用于实现精确的时间测量和定时事件。主要功能包括:
- 初始化: 通过
HLI_Gpt_Init函数,可以根据配置结构体一次性初始化一个或多个GPT模块,设置其预分频系数、周期值和溢出回调函数。 - 定时器控制:
- 启动定时器 (
HLI_Gpt_StartTimer): 可以启动一个已初始化的定时器,并指定其工作在单次模式 (HLI_GPT_ONESHOT) 或循环模式 (HLI_GPT_CONTINOUS)。 - 停止定时器 (
HLI_Gpt_StopTimer): 停止一个正在运行的定时器,并返回从启动到停止的总计tick数。
- 启动定时器 (
- 时间获取: 通过
HLI_Gpt_GetTimeElapsed函数,可以在不停止定时器的情况下,获取从启动到当前时刻所经过的tick数。 - 反初始化: 使用
HLI_Gpt_DeInit函数可以释放所有已初始化的GPT模块资源。 - 中断处理: 当定时器计数达到设定的周期值时,会触发溢出中断,并执行在初始化时注册的回调函数。
1.1 支持的设备
当前软件适用于以下芯片:
- KF32A158xxxSF
1.2 名词及缩写
| 缩写 | 解释 |
|---|---|
| GPT | 通用定时器(General Purpose Timer) |
2. 文件结构
| 文件名称 | 描述 |
|---|---|
| kf32axxx_hli_gpt.h | 此头文件输出Gpt驱动程序的宏、类型定义和函数原型 |
| kf32axxx_hli_gpt.c | 此文件包含Gpt驱动程序的通用功能 |
| kf32axxx_hli_gpt_cfg.h | 此头文件输出Gpt开关类的宏 |
| kf32axxx_hli_gpt_Lcfg.h | 此头文件输出Gpt驱动程序的配置项 |
| kf32axxx_hli_gpt_Lcfg.c | 此文件包含Gpt驱动程序的配置项定义 |
| __irq_timer.c | 此文件包含Gpt驱动程序的中断实现 |
3. 数据结构
3.1 数据类型
3.1.1 宏定义
无。
3.1.2 枚举
定时器工作模式 (HLI_Gpt_ModeType)
枚举值 说明 HLI_GPT_ONESHOT 单次模式 HLI_GPT_CONTINOUS 循环模式 定时器模块状态 (HLI_Gpt_ModuleStatusType)
枚举值 说明 HLI_GPT_UNINIT 定时器未初始化 HLI_GPT_INITIALIZED 定时器已初始化 HLI_GPT_STOPPED 定时器停止 HLI_GPT_RUNNING 定时器运行 HLI_GPT_EXPIRED 定时器过期 定时器模块 (HLI_Gpt_ModuleType)
枚举值 说明 HLI_GPT_MODULE_0 定时器T0 HLI_GPT_MODULE_1 定时器T1 HLI_GPT_MODULE_2 定时器T2 HLI_GPT_MODULE_3 定时器T3 HLI_GPT_MODULE_4 定时器T4 HLI_GPT_MODULE_20 定时器T20 HLI_GPT_MODULE_21 定时器T21
3.1.3 类型定义
无。
3.2 配置项说明
GPT模块配置 (HLI_Gpt_NumConfigType)
成员 解释 取值范围 GptUnit 定时器模块单元 可选范围参考 HLI_Gpt_ModuleType。PrescalerValue 定时器分频系数 T0-T4: 1 ~ 65536
T20-T21: 1 ~ 4294967295TimeValue 定时器周期值,达到该值后将调用回调函数 T0-T4: 16位无符号整数
T20-T21: 32位无符号整数TimeOverflowCallback 溢出回调函数指针 HLI_GPT_TimerOverflowFcnType类型的函数指针。GPT顶层配置 (HLI_Gpt_ConfigType)
成员 解释 取值范围 GptNum 已配置的定时器个数 需要与 GptNumConfigPtr指向的数组元素个数一致。GptNumConfigPtr 指向定时器配置信息数组的指针 指向一个 HLI_Gpt_NumConfigType类型的数组。
4. 驱动函数
4.1 函数接口
4.1.1 HLI_Gpt_Init
| Name | Description |
|---|---|
| 函数名称 | HLI_Gpt_Init |
| 语法: | void HLI_Gpt_Init(const HLI_Gpt_ConfigType *ConfigPtr) |
| 同步/异步: | 同步 |
| 重入性 : | 不可重入 |
| 形参(输入): | ConfigPtr : 指向定时器配置信息的指针。 |
| 形参(输出): | 无 |
| 返回值: | 无 |
| 描述: | 根据配置项内容对一个或多个定时器进行初始化。 |
| 注意事项: | 无 |
4.1.2 HLI_Gpt_StartTimer
| Name | Description |
|---|---|
| 函数名称 | HLI_Gpt_StartTimer |
| 语法: | void HLI_Gpt_StartTimer(HLI_Gpt_ModuleType GptTimer, HLI_Gpt_ModeType GptMode) |
| 同步/异步: | 同步 |
| 重入性 : | 可重入 (当操作不同定时器时) |
| 形参(输入): | GptTimer : 定时器模块编号,例如 HLI_GPT_MODULE_0。 |
| 形参(输入): | GptMode : 定时器工作模式,HLI_GPT_ONESHOT (单次) 或 HLI_GPT_CONTINOUS (循环)。 |
| 返回值: | 无 |
| 描述: | 启动指定的定时器。 |
| 注意事项: | 无 |
4.1.3 HLI_Gpt_StopTimer
| Name | Description |
|---|---|
| 函数名称 | HLI_Gpt_StopTimer |
| 语法: | uint32_t HLI_Gpt_StopTimer(HLI_Gpt_ModuleType GptTimer) |
| 同步/异步: | 同步 |
| 重入性 : | 可重入 (当操作不同定时器时) |
| 形参(输入): | GptTimer : 定时器模块编号。 |
| 返回值: | uint32_t: 从启动到停止的工作时长 (单位: tick)。 |
| 描述: | 停止指定的定时器,并返回其运行时长。 |
| 注意事项: | 无 |
4.1.4 HLI_Gpt_GetTimeElapsed
| Name | Description |
|---|---|
| 函数名称 | HLI_Gpt_GetTimeElapsed |
| 语法: | uint32_t HLI_Gpt_GetTimeElapsed(HLI_Gpt_ModuleType GptTimer) |
| 同步/异步: | 同步 |
| 重入性 : | 可重入 (当操作不同定时器时) |
| 形参(输入): | GptTimer : 定时器模块编号。 |
| 返回值: | uint32_t: 从启动到当前时刻的工作时长 (单位: tick)。 |
| 描述: | 在不停止定时器的情况下,获取其从启动开始到当前的工作时长。 |
| 注意事项: | 无 |
4.1.5 HLI_Gpt_DeInit
| Name | Description |
|---|---|
| 函数名称 | HLI_Gpt_DeInit |
| 语法: | void HLI_Gpt_DeInit(void) |
| 同步/异步: | 同步 |
| 重入性 : | 不可重入 |
| 形参(输入): | 无 |
| 返回值: | 无 |
| 描述: | 去初始化所有已经使用到的定时器。 |
| 注意事项: | 无 |
4.2 中断回调
4.2.1 HLI_GPT_TimerOverflowFcnType
| Name | Description |
|---|---|
| 函数名称 | HLI_GPT_TimerOverflowFcnType |
| 语法 | typedef void (*HLI_GPT_TimerOverflowFcnType)(HLI_Gpt_ModuleType GptIndex); |
| 形参(输入) | GptIndex : 触发中断的定时器模块编号。 |
| 返回值 | 无 |
| 描述 | 定时器溢出后进入该回调函数。 |
| 注意事项 | 函数内不应该有长时间的处理,需要处理完后立刻退出。 |
5. 使用示例
注
示例中使用的参数仅用作示例演示,应用时以实际为准。
此示例展示了如何初始化并启动一个GPT定时器,并在定时器溢出时通过回调函数进行处理。
6. 限制与假设
**时钟源:**GPT的时钟源已被限制为系统时钟SCLK。
不可使用
HLI_Gpt_GetTimeElapsed连续读取定时器运行时间。建议使用如下:while(HLI_Gpt_GetTimeElapsed(HLI_GPT_MODULE_0) < time) { delay(); }
7. 变更记录
| 版本 | 时间 | 变更记录 |
|---|---|---|
| v1.0 | 2025-11-20 | 新增初版文档 |
