PeripheralDriver_Flagchip_F.../Inc/module_driver_aontimer.h

189 lines
5.6 KiB
C

/**
* @file module_driver_aontimer.h
* @author Flagchip
* @brief aontimer driver type definition and API
* @version 2.0.0
* @date 2024-08-20
*
* SDK Version: 2.6.0
*
* @copyright Copyright (c) 2020-2024 Flagchip Semiconductors Co., Ltd.
*
* @details
*/
/* ********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 0.1.0 2023-12-15 Flagchip076 N/A First version for FC7300
* 2.0.0 2024-10-12 Flagchip076 N/A Change version and release
******************************************************************************** */
#ifndef _DRIVER_MODULE_DRIVER_AONTIMER_H_
#define _DRIVER_MODULE_DRIVER_AONTIMER_H_
#include "HwA_aontimer.h"
#if AONTIMER_INSTANCE_COUNT > 0U
/**
* @addtogroup module_driver_aontimer
* @{
*/
//#include "module_driver_smisc.h"
#include <stddef.h>
/**
* @name AONTIMER API Service IDs
*
* @{
*/
#define AONTIMER_INIT_ID 0U
#define AONTIMER_DEINIT_ID 1U
#define AONTIMER_START_ID 2U
#define AONTIMER_STOP_ID 3U
#define AONTIMER_UPDATE_COUNT_ID 4U
#define AONTIMER_INTE_PROC_ID 5U
/** @} */
/**
* @name AONTIMER Dev Error Code
* @brief Error Code of calling AONTIMER apis
*
* @{
*/
#define AONTIMER_E_PARAM_INSTANCE 0x01U
#define AONTIMER_E_PARAM_CLOCK 0x02U
#define AONTIMER_E_PARAM_POINTER 0x03U
/** @} */
/**
* @brief The instance index of the FTU peripheral
*
*/
typedef enum
{
AONTIMER_INSTANCE_0 = 0U
} AONTIMER_InstanceType;
#if AONTIMER_DEBUG_MODE_SUPPORT
/** @brief Aontimer debug mode */
typedef enum
{
AONTIMER_DBG_COUNTER_STOP = 0x00U,
AONTIMER_DBG_COUNTER_RUNNING = 0x01U
} AONTIMER_DebugType;
#endif /* end for AONTIMER_DEBUG_MODE_SUPPORT */
/**
* @brief Aontimer mode.
*
*/
typedef enum
{
AONTIMER_COUNTER_MODE = 0, /**< In this mode ,the clock source is internal.*/
AONTIMER_PULSE_MODE /**< In this mode ,the clock source is external(pin/trgsel).*/
} AONTIMER_ModeType;
/**
* @brief The structure of the AONTIMER processing handle
*
*/
typedef struct _AONTIMER_HandleType
{
AONTIMER_InstanceType eInstance; /*!< AONTIMER instance*/
char _aligned[3];
struct
{
void (*pAontimerCallback)(struct _AONTIMER_HandleType *pHandle); /*!< fault interrupt callback */
} tSettings;
} AONTIMER_HandleType;
/**
* @brief Aontimer Initialization struct type
*
*/
typedef struct
{
AONTIMER_ModeType eMode; /**< enumeration of aontier mode */
bool bBypassEn; /**< Whether to use prescaler in counter mode or use glitch filter in pulse mode,
if set input value is true ,then not use the prescaler or glitch filter.*/
AONTIMER_PulseClkSrcType ePulseClkSrc; /**< clock source of pulse mode */
AONTIMER_PulsePolarityType ePulsePol; /**< polarity of pulse mode */
uint8_t u8PulseFilterWidth; /**< the width of glitch filter in pulse mode , the range of the input value is :1~15,
and the range of glitch filter is :2^1 ~ 2^15. */
uint8_t u8Prescaler; /**< the width of prescaler in counter mode, the range of the input value is :0~15,
and the range of prescaler is :2^1 ~ 2^16. */
uint16_t u16StartValue; /**< start value of counter mode ,the range is : 0 ~ 65535 */
void (*pAontimerCallback)(AONTIMER_HandleType *pHandle); /**< the notification function of interrupt */
bool bIntEn; /**<Whether enable interrupt */
AONTIMER_ClkSrcType eClkSrc; /**< clock source of counter mode */
char _aligned0[2];
#if AONTIMER_DEBUG_MODE_SUPPORT
AONTIMER_DebugType eDbgMode; /**< enumeration of aontier debug mode */
char _aligned1[3];
#endif /* end for AONTIMER_DEBUG_MODE_SUPPORT */
} AONTIMER_InitType;
/* global function */
/**
* @brief Initialize aontimer instance
*
* @param pAontimerHandle the Aontimer instance to use
* @param pInitStruct Aontimer Initialize structure
*/
void AONTIMER_Init(AONTIMER_HandleType* pAontimerHandle, const AONTIMER_InitType *const pInitStruct);
/**
* @brief De-initialize aontimer instance
*
* @param pAontimerHandle the Aontimer instance to use
*/
void AONTIMER_Deinit(AONTIMER_HandleType* pAontimerHandle);
/**
* @brief Start Aontimer
*
* @param pAontimerHandle the Aontimer instance to use
*/
void AONTIMER_StartTimer(AONTIMER_HandleType* pAontimerHandle);
/**
* @brief Stop Aontimer
*
* @param pAontimerHandle the Aontimer instance to use
*/
void AONTIMER_StopTimer(AONTIMER_HandleType* pAontimerHandle);
/**
* @brief Update value of aontimer counter
*
* @param pAontimerHandle the Aontimer instance to use
* @param u16StartValue input value, range : 0~65535
*/
void AONTIMER_UpdateCounterValue(AONTIMER_HandleType* pAontimerHandle, const uint16_t u16StartValue);
/**
* @brief Aontimer common interrupt handle function
*
* @param pAontimerHandle the Aontimer instance to use
*/
void Aontimer_CommonProcessInterrupt(AONTIMER_HandleType* pAontimerHandle);
/** @}*/ /* module_driver_aontimer */
#endif
#endif