138 lines
2.9 KiB
C
138 lines
2.9 KiB
C
/**
|
|
* @file wm_timer.h
|
|
*
|
|
* @brief Timer Driver Module
|
|
*
|
|
* @author dave
|
|
*
|
|
* Copyright (c) 2014 Winner Microelectronics Co., Ltd.
|
|
*/
|
|
#ifndef WM_TIMER_H
|
|
#define WM_TIMER_H
|
|
|
|
#include "wm_type_def.h"
|
|
/** invalid timer id */
|
|
#define WM_TIMER_ID_INVALID 0xFF
|
|
|
|
/** timer interrupt callback */
|
|
typedef void (*tls_timer_irq_callback)(void *arg);
|
|
|
|
/** timer unit */
|
|
enum tls_timer_unit{
|
|
TLS_TIMER_UNIT_US = 0, /**< microsecond level(us) */
|
|
TLS_TIMER_UNIT_MS /**< millisecond level(ms) */
|
|
};
|
|
|
|
/** timer configuration */
|
|
struct tls_timer_cfg {
|
|
enum tls_timer_unit unit; /**< timer accuracy */
|
|
u32 timeout; /**< timeout period */
|
|
bool is_repeat; /**< cycle timer */
|
|
tls_timer_irq_callback callback; /**< timeout callback function */
|
|
void *arg; /**< parameter fot the timeout callback function */
|
|
};
|
|
|
|
/**
|
|
* @defgroup Driver_APIs Driver APIs
|
|
* @brief Driver APIs
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup Driver_APIs
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @defgroup TIMER_Driver_APIs TIMER Driver APIs
|
|
* @brief TIMER driver APIs
|
|
*/
|
|
|
|
/**
|
|
* @addtogroup TIMER_Driver_APIs
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief This function is used to create a timer
|
|
*
|
|
* @param[in] cfg timer configuration
|
|
*
|
|
* @retval WM_TIMER_ID_INVALID failed
|
|
* @retval other timer id
|
|
*
|
|
* @note
|
|
* User does not need to clear the interrupt flag.
|
|
* Rtc callback function is called in interrupt,
|
|
* so do not operate the critical data in the callback fuuction.
|
|
* Sending messages to other tasks to handle is recommended.
|
|
*/
|
|
u8 tls_timer_create(struct tls_timer_cfg *cfg);
|
|
|
|
/**
|
|
* @brief This function is used to start a timer
|
|
*
|
|
* @param[in] timer_id timer id
|
|
*
|
|
* @return None
|
|
*
|
|
* @note None
|
|
*/
|
|
void tls_timer_start(u8 timer_id);
|
|
|
|
/**
|
|
* @brief This function is used to stop a timer
|
|
*
|
|
* @param[in] timer_id timer id
|
|
*
|
|
* @return None
|
|
*
|
|
* @note None
|
|
*/
|
|
void tls_timer_stop(u8 timer_id);
|
|
|
|
/**
|
|
* @brief This function is used to change a timer wait time
|
|
*
|
|
* @param[in] timer_id timer id[0~5]
|
|
*
|
|
* @param[in] newtime new wait time
|
|
*
|
|
* @retval None
|
|
*
|
|
* @note If the timer does not start, this function will start the timer
|
|
*/
|
|
void tls_timer_change(u8 timer_id, u32 newtime);
|
|
|
|
/**
|
|
* @brief This function is used to read a timer's current value
|
|
*
|
|
* @param[in] timer_id timer id[0~5]
|
|
*
|
|
* @retval timer's current value
|
|
*
|
|
* @note none
|
|
*/
|
|
u32 tls_timer_read(u8 timer_id);
|
|
|
|
/**
|
|
* @brief This function is used to delete a timer
|
|
*
|
|
* @param[in] timer_id timer id
|
|
*
|
|
* @return None
|
|
*
|
|
* @note None
|
|
*/
|
|
void tls_timer_destroy(u8 timer_id);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* WM_TIMER_H */
|
|
|