K74B/app_Indie/drivers/hal/inc/gtimer_device.h

60 lines
1.3 KiB
C
Raw Normal View History

2024-01-16 10:46:17 +08:00
/**
* @copyright 2017 Indie Semiconductor.
*
* This file is proprietary to Indie Semiconductor.
* All rights reserved. Reproduction or distribution, in whole
* or in part, is forbidden except by express written permission
* of Indie Semiconductor.
*
* @file timer_device.h
*/
#ifndef TIMER_DEVICE_H__
#define TIMER_DEVICE_H__
#include <stdint.h>
#include <gtimer_sfr.h>
/* Timer 2 have been used by lin stack ,please don't use !!! */
#define HW_GP_TIMER_NUM 3U
typedef enum{
TIMER0 = 0U,
TIMER1 = 1U,
TIMER2 = 2U,
}HwGpTimerId_t;
typedef enum{
GTIMER_CLK_DIV_1 = 0U,
GTIMER_CLK_DIV_2,
GTIMER_CLK_DIV_4,
GTIMER_CLK_DIV_8,
GTIMER_CLK_DIV_16,
GTIMER_CLK_DIV_32,
GTIMER_CLK_DIV_64,
GTIMER_CLK_DIV_256,
GTIMER_CLK_DIV_1024,
GTIMER_CLK_DIV_2048,
GTIMER_CLK_DIV_4096,
}GTimer_Prescaler_t;
typedef enum GlobalTimerMode_t{
HW_TIMER_PERIODIC_MODE = 0U,
HW_TIMER_ONE_SHOT_MODE,
} HwGpTimeMode_t;
typedef void (*TimeoutCallbackFunc_t)(void);
typedef struct{
/* Timer parameters */
uint32_t timeReloadCnt;
uint32_t periodCount;
HwGpTimeMode_t mode;
TimeoutCallbackFunc_t handler;
} HwGpTimer_t;
void TIMER_Init(HwGpTimerId_t timerId, HwGpTimeMode_t mode, GTimer_Prescaler_t prescale, uint16_t timeoutTicks, TimeoutCallbackFunc_t callback);
void TIMER_Disable(HwGpTimerId_t timerId);
#endif /* __TIMER_DEVICE_H__ */