Zephyr API Documentation  3.6.99
A Scalable Open Source RTOS
No Matches
counter.h File Reference

Public API for counter and timer drivers. More...

#include <errno.h>
#include <zephyr/types.h>
#include <stddef.h>
#include <zephyr/device.h>
#include <zephyr/sys_clock.h>
#include <stdbool.h>
#include <syscalls/counter.h>

Go to the source code of this file.

Data Structures

struct  counter_alarm_cfg
 Alarm callback structure. More...
struct  counter_top_cfg
 Top value configuration structure. More...
struct  counter_config_info
 Structure with generic counter features. More...
struct  counter_driver_api


Counter device capabilities

 Counter count up flag.
Flags used by counter_top_cfg.

 Flag preventing counter reset when top value is changed.
 Flag instructing counter to reset itself if changing top value results in counter going out of new top value bound.
Alarm configuration flags

Used in alarm configuration structure (counter_alarm_cfg).

 Counter alarm absolute value flag.
 Alarm flag enabling immediate expiration when driver detects that absolute alarm was set too late.
Counter guard period flags
 Identifies guard period needed for detection of late setting of absolute alarm (see counter_set_channel_alarm).


typedef void(* counter_alarm_callback_t) (const struct device *dev, uint8_t chan_id, uint32_t ticks, void *user_data)
 Alarm callback.
typedef void(* counter_top_callback_t) (const struct device *dev, void *user_data)
 Callback called when counter turns around.
typedef int(* counter_api_start) (const struct device *dev)
typedef int(* counter_api_stop) (const struct device *dev)
typedef int(* counter_api_get_value) (const struct device *dev, uint32_t *ticks)
typedef int(* counter_api_get_value_64) (const struct device *dev, uint64_t *ticks)
typedef int(* counter_api_set_alarm) (const struct device *dev, uint8_t chan_id, const struct counter_alarm_cfg *alarm_cfg)
typedef int(* counter_api_cancel_alarm) (const struct device *dev, uint8_t chan_id)
typedef int(* counter_api_set_top_value) (const struct device *dev, const struct counter_top_cfg *cfg)
typedef uint32_t(* counter_api_get_pending_int) (const struct device *dev)
typedef uint32_t(* counter_api_get_top_value) (const struct device *dev)
typedef uint32_t(* counter_api_get_guard_period) (const struct device *dev, uint32_t flags)
typedef int(* counter_api_set_guard_period) (const struct device *dev, uint32_t ticks, uint32_t flags)
typedef uint32_t(* counter_api_get_freq) (const struct device *dev)


bool counter_is_counting_up (const struct device *dev)
 Function to check if counter is counting up.
uint8_t counter_get_num_of_channels (const struct device *dev)
 Function to get number of alarm channels.
uint32_t counter_get_frequency (const struct device *dev)
 Function to get counter frequency.
uint32_t counter_us_to_ticks (const struct device *dev, uint64_t us)
 Function to convert microseconds to ticks.
uint64_t counter_ticks_to_us (const struct device *dev, uint32_t ticks)
 Function to convert ticks to microseconds.
uint32_t counter_get_max_top_value (const struct device *dev)
 Function to retrieve maximum top value that can be set.
int counter_start (const struct device *dev)
 Start counter device in free running mode.
int counter_stop (const struct device *dev)
 Stop counter device.
int counter_get_value (const struct device *dev, uint32_t *ticks)
 Get current counter value.
int counter_get_value_64 (const struct device *dev, uint64_t *ticks)
 Get current counter 64-bit value.
int counter_set_channel_alarm (const struct device *dev, uint8_t chan_id, const struct counter_alarm_cfg *alarm_cfg)
 Set a single shot alarm on a channel.
int counter_cancel_channel_alarm (const struct device *dev, uint8_t chan_id)
 Cancel an alarm on a channel.
int counter_set_top_value (const struct device *dev, const struct counter_top_cfg *cfg)
 Set counter top value.
int counter_get_pending_int (const struct device *dev)
 Function to get pending interrupts.
uint32_t counter_get_top_value (const struct device *dev)
 Function to retrieve current top value.
int counter_set_guard_period (const struct device *dev, uint32_t ticks, uint32_t flags)
 Set guard period in counter ticks.
uint32_t counter_get_guard_period (const struct device *dev, uint32_t flags)
 Return guard period.

Detailed Description

Public API for counter and timer drivers.