| /******************************************************************************* | |
| * Copyright (C) 2014, ZTE Corporation. | |
| * | |
| * File Name: | |
| * File Mark: | |
| * Description: all function defines provided by sys module | |
| * Others: | |
| * Version: 1.0 | |
| * Author: limeifeng | |
| * Date: 2014-01-17 | |
| * History 1: | |
| * Date: | |
| * Version: | |
| * Author: | |
| * Modification: | |
| * History 2: | |
| ********************************************************************************/ | |
| #ifndef _DRVS_TIMER_H | |
| #define _DRVS_TIMER_H | |
| /**************************************************************************** | |
| * Include files | |
| ****************************************************************************/ | |
| #ifdef _OS_LINUX | |
| #include <linux/delay.h> | |
| #endif | |
| /**************************************************************************** | |
| * Macros | |
| ****************************************************************************/ | |
| #define SYSTIMER_INT TIMER0_INT | |
| /**************************************************************************** | |
| * Types | |
| ****************************************************************************/ | |
| typedef enum _T_ZDrv_TimerId | |
| { | |
| TIMER0 = 0,/*ps timer0--sysTick */ | |
| TIMER1 = 1,/*ps timer1--psm wake timer,must AON tiner**/ | |
| TIMER2 = 2,/*ps timer2--psm compensate timer,must AON tiner*/ | |
| TIMER3 = 3,/* rm timer1*/ | |
| TIMER4 = 4,/*ps rm timer--uicc timer*/ | |
| NUM_TIMERS | |
| }T_ZDrv_TimerId; | |
| typedef enum _T_ZDrv_TIMER_SRC_CLK | |
| { | |
| CLK_32K = 0, | |
| CLK_26M, | |
| }T_ZDrv_TIMER_SRC_CLK; | |
| typedef enum _T_ZDrv_TIMER_SRC_DIV | |
| { | |
| CLK_DIV0 = 0, | |
| CLK_DIV2 = 1, | |
| CLK_DIV4 = 3, | |
| CLK_DIV6 = 5, | |
| CLK_DIV8 = 7, | |
| CLK_DIV10 = 9, | |
| CLK_DIV12 = 11, | |
| CLK_DIV14 = 13, | |
| CLK_DIV16 = 15, | |
| CLK_DIV_NUM, | |
| }T_ZDrv_TIMER_SRC_DIV; | |
| typedef enum _T_ZDrv_CLK_PTV | |
| { | |
| CLK_PTV0 =0, /*not divide the work clock*/ | |
| CLK_PTV1 , /*divide the work clock 2 times*/ | |
| CLK_PTV2, /*divide the work clock 4 times*/ | |
| CLK_PTV3, /*divide the work clock 8 times*/ | |
| CLK_PTV4, | |
| CLK_PTV5, | |
| CLK_PTV6, | |
| CLK_PTV7, | |
| CLK_PTV8, | |
| CLK_PTV9, | |
| CLK_PTV10, | |
| CLK_PTV11, | |
| CLK_PTV12, | |
| CLK_PTV13, | |
| CLK_PTV14, | |
| CLK_PTV15, | |
| CLK_PTV16, | |
| CLK_PTV17, | |
| CLK_PTV18, | |
| CLK_PTV19, | |
| CLK_PTV20, | |
| CLK_PTV21, | |
| CLK_PTV22, | |
| CLK_PTV23, | |
| CLK_PTV24, | |
| CLK_PTV25, | |
| CLK_PTV26, | |
| CLK_PTV27, | |
| CLK_PTV28, | |
| CLK_PTV29, | |
| CLK_PTV30, | |
| CLK_PTV31, /*divide the work clock 2**31 times*/ | |
| CLK_PTV_NUM, | |
| }T_ZDrv_CLK_PTV; | |
| /*CLK_1MHz: src_clk=26MHz CLK_1KHz: src_clk=32KHz.*/ | |
| typedef enum _T_ZDrv_TIMER_CLK | |
| { | |
| CLK_1MHz = 0, | |
| CLK_1KHz, | |
| TIMER_CLK_NUM, | |
| }T_ZDrv_TIMER_CLK; | |
| typedef VOID (*ZDRV_TIMER_CALLBACK)(VOID); | |
| typedef VOID (*ZDRV_TIMER_ISR_CALLBACK)( UINT32 uiTimerId ); | |
| /**************************************************************************** | |
| * Constants | |
| ****************************************************************************/ | |
| /**************************************************************************** | |
| * Global Variables | |
| ****************************************************************************/ | |
| /**************************************************************************** | |
| * Function Prototypes | |
| ****************************************************************************/ | |
| /******************************************************************************* | |
| * Function: zDrvTimer_Stamp | |
| * Description:¸Ãº¯ÊýÓÃÓÚ»ñȡϵͳtimerÆô¶¯ºóµÄϵͳÕý³£ÔËÐеľø¶Ôʱ¼ä£¬²»°üº¬ÏµÍ³¹ØÖÐ¶Ï | |
| * ³¬¹ý1ms£¬ÒÔ¼°ÏµÍ³Ë¯ÃßµÄʱ¼ä²¹³¥¡£ | |
| * Parameters: | |
| * Input: | |
| * | |
| * Output: ϵͳÔËÐÐʱ¼ä£¬26M(µ¥Î»:us) 32K(µ¥Î»:ms) | |
| * | |
| * Returns: | |
| * | |
| * Others: | |
| ********************************************************************************/ | |
| UINT32 zDrvTimer_Stamp( VOID ); | |
| /************************************************************************** | |
| * Functin: zDrvTimer_Create | |
| * Description: This function is used to create a timer. | |
| * Parameters: | |
| * (IN) | |
| * pCallback: callback function pointer. | |
| * bPeriod: if auto-restart after the interval val reached zero | |
| * (OUT) | |
| * None. | |
| * Returns: | |
| * timer id if successed. [1, timers number ) | |
| * DRV_ERROR if failed. | |
| * Others: | |
| * None. | |
| **************************************************************************/ | |
| SINT32 zDrvTimer_Create( ZDRV_TIMER_CALLBACK pCallback, BOOL bPeriod ); | |
| /************************************************************************** | |
| * Functin: zDrvTimer_Release | |
| * Description: This function is used to release a timer. | |
| * Parameters: | |
| * (IN) | |
| * uiTimerId: the id of created timer. | |
| * (OUT) | |
| * None. | |
| * Returns: | |
| * DRV_SUCCESS: successed. | |
| * DRV_ERROR if failed. | |
| * Others: | |
| * None. | |
| **************************************************************************/ | |
| SINT32 zDrvTimer_Release( UINT32 uiTimerId ); | |
| /************************************************************************** | |
| * Functin: zDrvTimer_Start | |
| * Description: This function is used to start a timer. | |
| * Parameters: | |
| * (IN) | |
| * uiTimerId: the id of created timer. | |
| * uiDuration: time length. Unit: us | |
| * (OUT) | |
| * None. | |
| * Returns: | |
| * DRV_SUCCESS: successed. | |
| * DRV_ERROR if failed. | |
| * Others: | |
| * None. | |
| **************************************************************************/ | |
| SINT32 zDrvTimer_Start( UINT32 uiTimerId, UINT32 uiDuration ); | |
| /******************************************************************************* | |
| * Function:zDrvTimer_SetWorkClk | |
| * Description:ÉèÖÃTIMER_ID µÄʱÖÓԴƵÂÊÊ¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷Óà | |
| * Parameters: | |
| * Input:TIMER_ID : Timer ID , zDrvTimer_Open µÄÈë²Î¡£ | |
| * tick: CLK_1MHz£¬Ê±ÖÓÔ´Ñ¡Ôñ26M¡£ | |
| CLK_1KHz£¬ ʱÖÓÔ´Ñ¡Ôñ32K¡£ | |
| * Output:³É¹¦·µ»ØDRV_SUCCESS£¬ÆäËûÖµ±íʾʧ°ÜÔÒò¡£ | |
| * | |
| * Returns: | |
| * | |
| * | |
| * Others:Ê¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷ÓÃ!!! | |
| ********************************************************************************/ | |
| SINT32 zDrvTimer_SetWorkClk(T_ZDrv_TimerId TIMER_ID, T_ZDrv_TIMER_CLK tick); | |
| /******************************************************************************* | |
| * Function: zDrvTimer_SetCallBack | |
| * Description: ¿ÉÒÔÔÚzDrvTimer_StartTimerº¯ÊýÖÐÉ趨»Øµ÷º¯Êý¶ø²»Óô˺¯Êý | |
| * ´Ëº¯ÊýÌṩһÖÖÔÚzDrvTimer_StartTimerÖ®Íâ×¢²á»Øµ÷µÄ·½·¨¡£ | |
| * Parameters: | |
| * Input:uiTimerId : Timer ID , zDrvTimer_Open µÄ·µ»ØÖµ | |
| * fIsrCb: Ï£ÍûÔÚ¶¨Ê±µ½0ʱµÄtimerÖжÏISRÖÐÖ´ÐеĻص÷º¯Êý¡£ | |
| * Output: | |
| * | |
| * Returns: | |
| * | |
| * Others:Ê¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷ÓÃ!!! | |
| ********************************************************************************/ | |
| SINT32 zDrvTimer_SetCallBack(T_ZDrv_TimerId uiTimerId, ZDRV_TIMER_ISR_CALLBACK fIsrCb); | |
| /******************************************************************************* | |
| * Function:zDrvTimer_Open | |
| * Description:µ÷ÓÃÁ÷³Ì:zDrvTimer_Open->zDrvTimer_SetWorkClk->zDrvTimer_StartTimer->zDrvTimer_Close | |
| * Parameters: | |
| * Input: | |
| * | |
| * Output: | |
| * | |
| * Returns: | |
| * | |
| * | |
| * Others:Ê¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷Óà | |
| ********************************************************************************/ | |
| SINT32 zDrvTimer_Open( T_ZDrv_TimerId TIMER_ID); | |
| /******************************************************************************* | |
| * Function:zDrvTimer_Close | |
| * Description:¹Ø±Õ¶ÔÓ¦¶¨Ê±Æ÷²¢Ð¶ÔØÖÐ¶Ï | |
| * Parameters: | |
| * Input: | |
| * | |
| * Output: | |
| * | |
| * Returns:³É¹¦·µ»ØDRV_SUCCESS£¬ÆäËûÖµ±íʾʧ°ÜÔÒò¡£ | |
| * | |
| * | |
| * Others:Ê¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷ÓÃ!!! | |
| ********************************************************************************/ | |
| SINT32 zDrvTimer_Close( T_ZDrv_TimerId uiTimerId ); | |
| /******************************************************************************* | |
| * Function:zDrvTimer_StartTimer | |
| * Description: | |
| * Parameters: | |
| * Input: | |
| * | |
| * Output: | |
| * | |
| * Returns:³É¹¦·µ»ØDRV_SUCCESS£¬ÆäËûÖµ±íʾʧ°ÜÔÒò¡£ | |
| * | |
| * | |
| * Others:Ê¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷ÓÃ!!! | |
| ********************************************************************************/ | |
| SINT32 zDrvTimer_StartTimer( T_ZDrv_TimerId uiTimerId, UINT32 uiDuration, BOOL bPeriod , ZDRV_TIMER_ISR_CALLBACK fIsrCb ); | |
| /******************************************************************************* | |
| * Function:zDrvTimer_Remain | |
| * Description:²éѯµ±Ç°¶¨Ê±Æ÷Ê£Óඨʱʱ¼ä¡£ | |
| * Parameters: | |
| * Input: | |
| * | |
| * Output: | |
| * | |
| * Returns:Ê£Óඨʱʱ¼ä£¬µ¥Î»¸ù¾ÝzDrvTimer_SetWorkClkº¯ÊýÉèÖõÄʱÖÓԴƵÂÊÈ·¶¨ | |
| * ʱÖÓԴΪ1M_HZʱµ¥Î»Îªus£¬1K_HZʱµ¥Î»Îªms¡£ | |
| * | |
| * | |
| * Others:Ê¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷ÓÃ!!! | |
| ********************************************************************************/ | |
| UINT32 zDrvTimer_Remain( T_ZDrv_TimerId uiTimerId ); | |
| /******************************************************************************* | |
| * Function:zDrvTimer_StopTimer | |
| * Description:Í£Ö¹¶¨Ê±Æ÷¼ÆÊ±¡£ | |
| * Parameters: | |
| * Input: | |
| * | |
| * Output: | |
| * | |
| * Returns:³É¹¦·µ»ØDRV_SUCCESS£¬ÆäËûÖµ±íʾʧ°ÜÔÒò¡£ | |
| * | |
| * | |
| * Others:Ê¡µçרÓã¬ÆäËüÄ£¿é²»ÔÊÐíµ÷ÓÃ!!! | |
| ********************************************************************************/ | |
| SINT32 zDrvTimer_StopTimer( T_ZDrv_TimerId uiTimerId ); | |
| #endif/*_DRVS_TIMER_H*/ | |