# Tuyaos/timer

> TuyaOS hardware timer via tkl_timer: init, start, stop, callback. 硬件定时器、tkl_timer、周期回调。

- Skill: `tuya/tuyaos-timer` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tuya/tuyaos-timer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tuya/tuyaos-timer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tuya (https://skillmd.com/u/tuya)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tuya/tuyaos-timer

---


# TuyaOS Timer (`tkl_timer`)

**Demo:** `…/examples/driver_timer/example_driver_timer.c`

## Pattern

```c
#include "tkl_timer.h"
#include "tkl_output.h"

#define TIMER_ID     0
#define DELAY_TIME   1000  /* unit per demo/platform */

static void timer_cb(void *args)
{
    (void)args;
    tkl_log_output("\r\n------------- Timer Callback --------------\r\n");
    tkl_timer_stop(TIMER_ID);
    tkl_timer_deinit(TIMER_ID);
}

void app_timer_start(void)
{
    TUYA_TIMER_BASE_CFG_T cfg = {
        .mode = TUYA_TIMER_MODE_PERIOD, /* verify enum in demo */
        .cb = timer_cb,
        .args = NULL,
    };
    tkl_timer_init(TIMER_ID, &cfg);
    tkl_timer_start(TIMER_ID, DELAY_TIME);
}
```

## API

| Function | Role |
|----------|------|
| `tkl_timer_init` | bind callback/mode |
| `tkl_timer_start` | arm |
| `tkl_timer_stop` / `tkl_timer_deinit` | stop/release |

Keep callbacks short; defer heavy work to a thread (`tal_thread_*`).

