# 应用示例 ```c int test_timer_callback(void *priv) { static int cnt = 0; printf("timer %d interrupt count %d\n", *((int *)priv), ++cnt); return 0; } int timer_example(void) { // 获取一个计数器 unsigned int timer1_id = gx_timer_register(NULL, 0xFFFFFFFF, NULL, GX_HAL_TIMER_MODE_CNT); // 获取计数器计数 gx_timer_get_count(timer1_id); // 清空计数器计数 gx_timer_reset_count(timer1_id); // 暂停计数器计数 gx_timer_stop(timer1_id) // 开启计数器计数 gx_timer_start(timer1_id) // 释放 timer 资源 gx_timer_unregister(timer1_id); // 申请一个定时 1000ms,只触发一次的定时器 unsigned int timer2_id = gx_timer_register(test_timer_callback, 1000, NULL, GX_HAL_TIMER_MODE_ONESHOT); // 申请一个每过 2000ms 就触发一次中断的定时器 unsigned int timer3_id = gx_timer_register(test_timer_callback, 2000, NULL, GX_HAL_TIMER_MODE_PERIOD); // P15 管脚上生成一个 100ms 为周期,占空比为 50% 的 PWM gx_timer_enable_pwm(15, 100000, 50000); // 关闭 P15 上的 PWM gx_timer_disable_pwm(15); } ``` :::{note} fornax 管脚只能生成固定 timer 的 PWM,详情需要查看管脚的复用功能是否支持 PWM 功能 :::