How to use timer in Zephyr library? which example to use?

I tried using counter example but seems like it uses RTC0, i want to use internal timer. Counter example gets stuck in device det get binding. Here is the code for reference.


void Timer_counterInterruptFunction(const struct device *counter_dev,
                      uint8_t chan_id, uint32_t ticks,
                      void *user_data)
{

    struct counter_alarm_cfg *config = user_data;
    uint32_t now_ticks;
    uint64_t MasterTimerMicroSeconds;
    int MasterTimerMilliSeconds;
    int MasterTimerSeconds;
    int err;

    err = counter_get_value(counter_dev, &now_ticks);
    if (err) {
        printk("Failed to read counter value (err %d)", err);
        return;
    }

    MasterTimerMicroSeconds = counter_ticks_to_us(counter_dev, now_ticks);
    MasterTimerSeconds = (int)(MasterTimerMicroSeconds / USEC_PER_SEC);

    err = counter_set_channel_alarm(counter_dev, ALARM_CHANNEL_ID,user_data);
}

void Timer_Init(void)
{
    int err;
    counter_dev = device_get_binding(TIMER);
    err=counter_start(&counter_dev);

    alarm_cfg.flags = 0;
    alarm_cfg.ticks = counter_us_to_ticks(counter_dev, 1000000);
    alarm_cfg.callback = Timer_counterInterruptFunction;
    alarm_cfg.user_data = &alarm_cfg;

    err = counter_set_channel_alarm(counter_dev, ALARM_CHANNEL_ID,
                    &alarm_cfg);

}
Related