132 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|     Public header file for timer module.
 | |
| 
 | |
|     This file is the header file that define the API and data type for timer
 | |
|     module.
 | |
| 
 | |
|     @file       timer.h
 | |
|     @ingroup    miDrvTimer_Timer
 | |
|     @note       Nothing.
 | |
| 
 | |
|     Copyright   Novatek Microelectronics Corp. 2018.  All rights reserved.
 | |
| */
 | |
| 
 | |
| #ifndef _TIMER_H
 | |
| #define _TIMER_H
 | |
| 
 | |
| #if defined __UITRON || defined __ECOS
 | |
| #include "Driver.h"
 | |
| #else
 | |
| #include "comm/driver.h"
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|     @addtogroup miDrvTimer_Timer
 | |
| */
 | |
| //@{
 | |
| 
 | |
| /**
 | |
|     Timer ID.
 | |
| 
 | |
|     Timer ID.
 | |
| */
 | |
| typedef enum {
 | |
| 	TIMER_0,                        ///< Timer ID for Timer 0
 | |
| 	TIMER_1,                        ///< Timer ID for Timer 1
 | |
| 	TIMER_2,                        ///< Timer ID for Timer 2
 | |
| 	TIMER_3,                        ///< Timer ID for Timer 3
 | |
| 	TIMER_4,                        ///< Timer ID for Timer 4
 | |
| 	TIMER_5,                        ///< Timer ID for Timer 5
 | |
| 	TIMER_6,                        ///< Timer ID for Timer 6
 | |
| 	TIMER_7,                        ///< Timer ID for Timer 7
 | |
| 	TIMER_8,                        ///< Timer ID for Timer 8
 | |
| 	TIMER_9,                        ///< Timer ID for Timer 9
 | |
| 	TIMER_10,                       ///< Timer ID for Timer 10
 | |
| 	TIMER_11,                       ///< Timer ID for Timer 11
 | |
| 	TIMER_12,                       ///< Timer ID for Timer 12
 | |
| 	TIMER_13,                       ///< Timer ID for Timer 13
 | |
| 	TIMER_14,                       ///< Timer ID for Timer 14
 | |
| 	TIMER_15,                       ///< Timer ID for Timer 15
 | |
| 	TIMER_16,                       ///< Timer ID for Timer 16
 | |
| 	TIMER_17,                       ///< Timer ID for Timer 17
 | |
| 	TIMER_18,                       ///< Timer ID for Timer 18
 | |
| 	TIMER_19,                       ///< Timer ID for Timer 19
 | |
| 	TIMER_NUM,                      ///< Timer number
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(TIMER_ID)
 | |
| } TIMER_ID, *PTIMER_ID;
 | |
| 
 | |
| #define TIMER_INVALID   0xFFFFFFFF  ///< Invalid Timer ID
 | |
| 
 | |
| /**
 | |
|     Timer mode.
 | |
| 
 | |
|     Timer mode.
 | |
| */
 | |
| typedef enum {
 | |
| 	TIMER_MODE_CLKSRC_DIV0  = 0x00000000,   ///< Timer clock source is from divider 0, the clock is fixed at 1 MHz.
 | |
| 	TIMER_MODE_CLKSRC_DIV1  = 0x00000001,   ///< Timer clock source is from divider 1, the clock can be configured.
 | |
| 	TIMER_MODE_ONE_SHOT     = 0x00000010,   ///< Timer operation mode is "one shot"
 | |
| 	TIMER_MODE_FREE_RUN     = 0x00000020,   ///< Timer operation mode is "free run"
 | |
| 	TIMER_MODE_ENABLE_INT   = 0x00000040,   ///< Enable timeout interrupt
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(TIMER_MODE)
 | |
| } TIMER_MODE, *PTIMER_MODE;
 | |
| 
 | |
| /**
 | |
|     Timer state.
 | |
| 
 | |
|     Timer state.
 | |
| */
 | |
| typedef enum {
 | |
| 	TIMER_STATE_PAUSE,              ///< Stop timer
 | |
| 	TIMER_STATE_PLAY,               ///< Start timer
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(TIMER_STATE)
 | |
| } TIMER_STATE, *PTIMER_STATE;
 | |
| 
 | |
| /**
 | |
|     Timer Configuration ID
 | |
| 
 | |
|     Timer Configuration ID for timer_setConfig() and timer_getConfig()
 | |
| 
 | |
| */
 | |
| typedef enum {
 | |
| 	TIMER_CONFIG_ID_DIV1_CLK = 1,   ///< Divider1 clock. Default is 1 MHz (1 clock is 1us)
 | |
| 	///< @note  Valid value: 11,718 ~ 3,000,000 , unit: Hz.
 | |
| 	///<        Real clock might lower than your setting.
 | |
| 	///<        Please call timer_getConfig(TIMER_CONFIG_ID_DIV1_CLK) to confirm.
 | |
| 	///<        Formula: Clock = 3 MHz / (Divider + 1)
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(TIMER_CONFIG_ID)
 | |
| } TIMER_CONFIG_ID;
 | |
| 
 | |
| // Timer Driver API
 | |
| extern ER       timer_init(void);
 | |
| extern ER       timer_open(PTIMER_ID p_id, DRV_CB callback);
 | |
| extern ER       timer_close(TIMER_ID id);
 | |
| extern ER       timer_open_auto_close(PTIMER_ID p_id, DRV_CB callback);
 | |
| extern ER       timer_cfg(TIMER_ID id, UINT32 interval, TIMER_MODE mode, TIMER_STATE state);
 | |
| extern ER       timer_pause_play(TIMER_ID id, TIMER_STATE state);
 | |
| extern ER       timer_wait_timeup(TIMER_ID id);
 | |
| extern ER       timer_check_timeup(TIMER_ID id, BOOL *p_check);
 | |
| extern ER       timer_reload(TIMER_ID id, UINT32 interval);
 | |
| 
 | |
| // Timer Utility API
 | |
| extern void     timer_set_config(TIMER_CONFIG_ID id, UINT32 config);
 | |
| extern UINT32   timer_get_config(TIMER_CONFIG_ID id);
 | |
| extern TIMER_ID timer_get_sys_timer_id(void);
 | |
| extern UINT32   timer_get_current_count(TIMER_ID id);
 | |
| extern UINT32   timer_get_target_count(TIMER_ID id);
 | |
| 
 | |
| #if defined __FREERTOS
 | |
| int nvt_timer_drv_init(void);
 | |
| void delay_us_poll(UINT32 micro_sec);
 | |
| void delay_us(UINT32 micro_sec);
 | |
| #endif
 | |
| 
 | |
| //@}
 | |
| 
 | |
| #endif
 | 
