126 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			4.2 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. 2011.  All rights reserved.
 | |
| */
 | |
| 
 | |
| #ifndef _TIMER_H
 | |
| #define _TIMER_H
 | |
| 
 | |
| #include <kwrap/type.h>
 | |
| 
 | |
| /**
 | |
|     @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
 | |
| #define TIMER_SYSTIMER_ID  0
 | |
| /**
 | |
|     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;
 | |
| 
 | |
| typedef void (*TIMER_CB)(UINT32 event);
 | |
| extern ER       timer_init(void);
 | |
| extern ER       timer_open(PTIMER_ID p_id, TIMER_CB callback);
 | |
| extern ER       timer_close(TIMER_ID id);
 | |
| extern ER       timer_open_auto_close(PTIMER_ID p_id, TIMER_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);
 | |
| 
 | |
| //@}
 | |
| 
 | |
| #endif
 | |
| 
 | 
