⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 net_tmr.h

📁 从Luminary官方网站下载的LM3S6000系列的UCos+Tcp/IP的源码, 经本人稍微修改后可直接在IAR6.2下编译通过,里面包括了LM3S6000系列的所有外设UART, PWn....
💻 H
📖 第 1 页 / 共 2 页
字号:


/*$PAGE*/
/*
*********************************************************************************************************
*                                             DATA TYPES
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                  NETWORK TIMER QUANTITY DATA TYPE
*********************************************************************************************************
*/

typedef  CPU_INT16U  NET_TMR_QTY;                               /* Defines max qty of net tmrs to support.              */


/*
*********************************************************************************************************
*                                    NETWORK TIMER TICK DATA TYPE
*
* Note(s) : (1) 'NET_TMR_TICK' data type size determined by selecting the smaller data type size of 
*               'CPU_INT16U'/'CPU_INT32U' whose maximum unsigned value is NOT less than NET_TMR_CFG_TICK_TH.
*
*           (2) NET_TMR_TIME_INFINITE_TICK & NET_TMR_TIME_INFINITE  MUST be globally #define'd AFTER
*              'NET_TMR_TICK' data type declared.
*********************************************************************************************************
*/

#define  NET_TMR_CFG_TICK_TH            NET_TMR_TIME_MAX

                                                                /* Defines   max TMR tick cnts.                         */
#if (NET_TMR_CFG_TICK_TH < 65536)

typedef  CPU_INT16U  NET_TMR_TICK;

#define  NET_TMR_TIME_INFINITE_TICK     DEF_INT_16U_MAX_VAL     /* Define as max unsigned val (see Note #2).            */


#else

typedef  CPU_INT32U  NET_TMR_TICK;

#define  NET_TMR_TIME_INFINITE_TICK     DEF_INT_32U_MAX_VAL     /* Define as max unsigned val (see Note #2).            */

#endif


#define  NET_TMR_TIME_INFINITE          NET_TMR_TIME_INFINITE_TICK


/*$PAGE*/
/*
*********************************************************************************************************
*                                       NETWORK TIMER DATA TYPE
*
*                                    NET_TMR
*                                |-------------|
*                                | Timer Type  |
*                     Previous   |-------------|
*                      Timer <----------O      |
*                                |-------------|     Next
*                                |      O----------> Timer
*                                |-------------|                    ------------- 
*                                |      O-------------------------> |           |
*                                |-------------|       Object       |  Object   |
*                                |      O----------> Expiration     |   that    |
*                                |-------------|      Function      | requested |
*                                |   Current   |                    |   Timer   |
*                                | Timer value |                    |           |
*                                |-------------|                    -------------
*                                |    Flags    |
*                                |-------------|
*
*
* Note(s) : (1) Forced word-alignment at start of timer NOT required since first data member 'Type' is 
*               declared as 'CPU_INT32U'.
*
*           (2) 'PrevPtr'/'NextPtr' ideally declared as 'NET_TMR' pointers; declared as 'void' pointers 
*               because 'NET_TMR' NOT fully defined at time of declaration.
*********************************************************************************************************
*/

                                                                /* --------------------- NET TMR ---------------------- */
typedef  struct  net_tmr {
    NET_TYPE        Type;                                       /* Type cfg'd @ init : NET_TMR_TYPE_TMR.                */

    void           *PrevPtr;                                    /* Ptr to PREV tmr.                                     */
    void           *NextPtr;                                    /* Ptr to NEXT tmr.                                     */

    void           *Obj;                                        /* Ptr to obj  using TMR.                               */
    CPU_FNCT_PTR    Fnct;                                       /* Ptr to fnct used on obj when TMR expires.            */

    NET_TMR_TICK    TmrVal;                                     /* Cur tmr val (in NET_TMR_TICK ticks).                 */

    NET_TMR_QTY     ID;                                         /* Tmr id.                                              */
    CPU_INT16U      Flags;                                      /* Tmr flags.                                           */

} NET_TMR;


/*$PAGE*/
/*
*********************************************************************************************************
*                                          GLOBAL VARIABLES
*********************************************************************************************************
*/

NET_TMR_EXT  NET_TMR         NetTmr_Tbl[NET_TMR_CFG_NBR_TMR];
NET_TMR_EXT  NET_TMR        *NetTmr_PoolPtr;                    /* Ptr to pool of free net tmrs.                        */
NET_TMR_EXT  NET_STAT_POOL   NetTmr_PoolStat;

NET_TMR_EXT  NET_TMR        *NetTmr_TaskListHead;               /* Ptr to head of Tmr Task List.                        */
NET_TMR_EXT  NET_TMR        *NetTmr_TaskListPtr;                /* Ptr to cur     Tmr Task List tmr to update.          */


#if (NET_CTR_CFG_ERR_EN   == DEF_ENABLED)                       /* ------------------- NET TMR ERRS ------------------- */
NET_TMR_EXT  NET_CTR         NetTmr_ErrNoneAvailCtr;            /* Nbr        net tmr unavail      accesses.            */

#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_TMR_EXT  NET_CTR         NetTmr_ErrNullPtrCtr;              /* Nbr null   net tmr              accesses.            */
NET_TMR_EXT  NET_CTR         NetTmr_ErrNullObjCtr;              /* Nbr null   net tmr obj          accesses.            */
NET_TMR_EXT  NET_CTR         NetTmr_ErrNullFnctCtr;             /* Nbr null   net tmr fnct         accesses.            */
NET_TMR_EXT  NET_CTR         NetTmr_ErrNotUsedCtr;              /* Nbr unused net tmr              accesses.            */

NET_TMR_EXT  NET_CTR         NetTmr_ErrInvalidTypeCtr;          /* Nbr        net tmr invalid type accesses.            */
#endif
#endif


/*$PAGE*/
/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*********************************************************************************************************
*/

void            NetTmr_Init                (NET_ERR       *perr);

void            NetTmr_TaskHandler         (void);


                                                                        /* ----------- TMR ALLOCATION FNCTS ----------- */
NET_TMR        *NetTmr_Get                 (void          *obj,
                                            CPU_FNCT_PTR   fnct,
                                            NET_TMR_TICK   time,
                                            CPU_INT16U     flags,
                                            NET_ERR       *perr);

void            NetTmr_Free                (NET_TMR       *ptmr);


                                                                        /* -------------- TMR API FNCTS --------------- */
void            NetTmr_Set                 (NET_TMR       *ptmr,
                                            CPU_FNCT_PTR   fnct,
                                            NET_TMR_TICK   time,
                                            NET_ERR       *perr);


                                                                        /* ------------- TMR STATUS FNCTS ------------ */
NET_STAT_POOL   NetTmr_PoolStatGet         (void);

void            NetTmr_PoolStatResetMaxUsed(void);


/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*                                      DEFINED IN OS'S  net_os.c
*********************************************************************************************************
*/

void            NetOS_Tmr_Init             (NET_ERR       *perr);       /* Create & start Tmr Task.                     */


/*$PAGE*/
/*
*********************************************************************************************************
*                                        CONFIGURATION ERRORS
*********************************************************************************************************
*/

#ifndef  NET_TMR_CFG_NBR_TMR
#error  "NET_TMR_CFG_NBR_TMR          not #define'd in 'net_cfg.h'"
#error  "                       [MUST be  >     0]                "
#error  "                       [     &&  < 65536]                "
                                                                        /* See 'NETWORK TIMER QUANTITY DATA TYPE'.      */
#elif  ((NET_TMR_CFG_NBR_TMR <                   1) || \
        (NET_TMR_CFG_NBR_TMR > DEF_INT_16U_MAX_VAL))
#error  "NET_TMR_CFG_NBR_TMR    illegally #define'd in 'net_cfg.h'"
#error  "                       [MUST be  >     0]                "
#error  "                       [     &&  < 65536]                "
#endif




#ifndef  NET_TMR_CFG_TASK_FREQ
#error  "NET_TMR_CFG_TASK_FREQ        not #define'd in 'net_cfg.h'"
#error  "                       [MUST be  > 0 Hz]                 "
#elif   (NET_TMR_CFG_TASK_FREQ < 1)
#error  "NET_TMR_CFG_TASK_FREQ  illegally #define'd in 'net_cfg.h'"
#error  "                       [MUST be  > 0 Hz]                 "
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -