CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

APP TIM驱动

结构体

app_tim_params_t

结构体定义如下:

表 87 app_tim_params_t结构体成员
成员 描述 取值

app_tim_id_t id

Timer模块ID

该参数的取值可以是下列值中的任意一个:

  • APP_TIM_ID_0(TIMER0)
  • APP_TIM_ID_1(TIMER1)

timer_init_t init

Timer模块的初始化配置

参考timer_init_t结构体

tim_env_t tim_env

仅用于参数、句柄和信号量的保存,不需要配置

详细信息请参考文件:SDK_Folder\drivers\inc\app_tim.h

timer_init_t

结构体定义如下:

表 88 timer_init_t结构体成员
成员 描述 取值

uint32_t auto_reload

自动装载值,表示定时器的倒计时数。如果要配置特定的持续时间(例如,µs、ms或s),则需要使用以下公式:

Expect_time (s) = RELOAD/(SystemCoreClock-1)

当自动装载值配置为0时,不会产生计数完成事件中断。其中RELOAD为自动装载值,即auto_reload,SystemCoreClock为系统时钟频率。

0 ~ 0xFFFFFFFF

详细信息请参考文件:
  • GR551x/GR5526/GR5x25:SDK_Folder\drivers\inc\hal\gr55xx_hal_tim.h
  • GR533x:SDK_Folder\drivers\inc\hal\gr533x_hal_tim.h
  • GR5405:SDK_Folder\hal_drv\include\hal_tim.h

枚举

app_tim_id_t

枚举定义如下:

表 89 app_tim_id_t枚举成员
成员 描述

APP_TIM_ID_0

TIMER模块0

APP_TIM_ID_1

TIMER模块1

APP_TIM_ID_MAX

TIMER模块总数,用作参数检测

详细信息请参考文件:SDK_Folder\drivers\inc\app_tim.h

app_tim_evt_t

枚举定义如下:

表 90 app_tim_evt_t枚举成员
成员 描述

APP_TIM_EVT_ERROR = 0

错误事件

APP_TIM_EVT_DONE = 1

计数完成事件

APP_TIM_EVT_CHANNEL0 CHANNEL0事件,仅适用于GR533x、GR5405
APP_TIM_EVT_CHANNEL1 CHANNEL1事件,仅适用于GR533x、GR5405
APP_TIM_EVT_CHANNEL2 CHANNEL2事件,仅适用于GR533x、GR5405
APP_TIM_EVT_CHANNEL3 CHANNEL3事件,仅适用于GR533x、GR5405

详细信息请参考文件:SDK_Folder\drivers\inc\app_tim.h

app_tim_state_t

枚举定义如下:

表 91 app_tim_state_t枚举成员
成员 描述

APP_TIM_INVALID = 0

TIMER不可用

APP_TIM_ACTIVITY = 1

TIMER激活

APP_TIM_SLEEP = 2

TIMER睡眠

详细信息请参考文件:SDK_Folder\drivers\inc\app_tim.h

接口函数

表 92 TIM驱动接口函数
API 芯片
GR551x GR5526 GR5x25 GR533x GR5405

app_tim_init

Y

Y

Y

Y

Y

app_tim_deinit

Y

Y

Y

Y

Y

app_tim_start

Y

Y

Y

Y

Y

app_tim_stop

Y

Y

Y

Y

Y

app_tim_get_handle

Y

Y

Y

Y

Y

app_tim_get_channel0_val N N N

Y

Y

app_tim_get_channel1_val N N N

Y

Y

app_tim_get_channel2_val N N N

Y

Y

app_tim_get_channel3_val N N N

Y

Y

app_tim_init

表 93 app_tim_init接口
函数原型

uint16_t app_tim_init(app_tim_params_t *p_params, app_tim_evt_handler_t evt_handler)

功能说明

初始化Timer

输入参数
  • p_params:初始化参数的结构体指针

  • evt_handler:用户自己实现的中断回调函数

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

回调函数形式参照typedef void (*app_tim_evt_handler_t)(app_tim_evt_t *p_evt);

HAL层已经实现中断标志位的清理,用户不用关心中断标志的清理,回调函数根据返回事件类型进行相应的处理即可。

app_tim_deinit

表 94 app_tim_deinit接口
函数原型

uint16_t app_tim_deinit(app_tim_id_t id)

功能说明

反初始化Timer

输入参数

id:Timer模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_tim_start

表 95 app_tim_start接口
函数原型

uint16_t app_tim_start(app_tim_id_t id)

功能说明

开启Timer,使能中断并开始向下计数

输入参数

id:指定Timer模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_tim_stop

表 96 app_tim_stop接口
函数原型

uint16_t app_tim_stop(app_tim_id_t id)

功能说明

关闭Timer,停止计数

输入参数

id:指定Timer模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_tim_get_handle

表 97 app_tim_get_handle接口
函数原型

uint16_t app_tim_get_handle(app_tim_id_t id)

功能说明

获取Timer句柄

输入参数

id:指定Timer模块ID

返回值
Timer句柄,详见:
  • GR551x/GR5526/GR5x25:SDK_Folder\drivers\inc\hal\gr55xx_hal_tim.h
  • GR533x:SDK_Folder\drivers\inc\hal\gr533x_hal_tim.h
  • GR5405:SDK_Folder\hal_drv\include\hal_tim.h
备注

app_tim_get_channel0_val

表 98 app_tim_get_channel0_val接口
函数原型

uint32_t app_tim_get_channel0_val(app_tim_id_t id)

功能说明

获取当前通道0的计数值

输入参数

id:Timer模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 仅适用于GR533x、GR5405

app_tim_get_channel1_val

表 99 app_tim_get_channel1_val接口
函数原型

uint32_t app_tim_get_channel1_val(app_tim_id_t id)

功能说明

获取当前通道1的计数值

输入参数

id:Timer模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 仅适用于GR533x、GR5405

app_tim_get_channel2_val

表 100 app_tim_get_channel2_val接口
函数原型

uint32_t app_tim_get_channel2_val(app_tim_id_t id)

功能说明

获取当前通道2的计数值

输入参数

id:Timer模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 仅适用于GR533x、GR5405

app_tim_get_channel3_val

表 101 app_tim_get_channel3_val接口
函数原型

uint32_t app_tim_get_channel3_val(app_tim_id_t id)

功能说明

获取当前通道3的计数值

输入参数

id:Timer模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注 仅适用于GR533x、GR5405

示例工程

示例工程代码帮助开发者快速理解并使用TIMER驱动。

TIMER

该示例工程实现TIMER的定时功能,工程路径:SDK_Folder\projects\peripheral\tim\app_tim

流程图

示例设置TIMER0的reload值为SystemCoreClock - 1,因为TIMER0使用系统时钟,因此会看到每秒产生一次中断并打印。设置TIMER1的reload值为SystemCoreClok /100 - 1,TIMER1每10 ms产生中断,TIMER0和TIMER1计数将在10s后停止。

图 11 TIMER定时功能实现流程

初始化参数

    p_params_tim0.id = APP_TIM_ID_0;
    p_params_tim0.init.auto_reload = SystemCoreClock - 1;
  • id:TIMER模块ID,选择APP_TIM_ID_0(TIMER0)
  • auto_reload:自动装载值,设置为SystemCoreClock – 1,表示1s

重要函数

  • 初始化模块

    app_tim_init(&p_params_tim0, app_tim0_event_handler)
  • 开启TIMER计数

    app_tim_start(APP_TIM_ID_0)
  • 停止TIMER计数

    app_tim_stop(APP_TIM_ID_0)

测试验证

连接开发板到PC端,打开串口助手,连接串口,查看串口日志。TIMER0 1s打印一次串口,10s后停止打印。

This is 0th call TIMER0.

This is 1th call TIMER0.

This is 2th call TIMER0.

This is 3th call TIMER0.

This is 4th call TIMER0.

This is 5th call TIMER0.

This is 6th call TIMER0.

This is 7th call TIMER0.

This is 8th call TIMER0.

This is 9th call TIMER0.

This example demo end.

扫描关注

打开微信,使用“扫一扫”即可关注。