📄 csl_timerhal.h
字号:
/******************************************************************************\* Copyright (C) 2000 Texas Instruments Incorporated.* All Rights Reserved*------------------------------------------------------------------------------* FILENAME...... csl_timerhal.h* DATE CREATED.. 08/14/2000* LAST MODIFIED. 08/02/2004 - Adding support for C6418* 09/30/2003 Added SPND field description macros for CTL reg.* 10/03/2000*------------------------------------------------------------------------------* REGISTERS** CTL0 - timer control register 0* CTL1 - timer control register 1* CTL2 - timer control register 2 (1)* PRD0 - timer period register 0* PRD1 - timer period register 1* PRD2 - timer period register 2 (1)* CNT0 - timer count register 0* CNT1 - timer count register 1* CNT2 - timer count register 2 (1)** (1) - only supported on C64x devices*\******************************************************************************/#ifndef _CSL_TIMERHAL_H_#define _CSL_TIMERHAL_H_#include <csl_stdinc.h>#include <csl_chip.h>#if (TIMER_SUPPORT)/******************************************************************************\* MISC section\******************************************************************************/#if (CHIP_6414 | CHIP_6415 | CHIP_6416 | CHIP_DM642 | CHIP_DM641 | CHIP_DM640 | CHIP_6412 | CHIP_6411 | CHIP_6410 | CHIP_6413 | CHIP_6418) #define TIMER_DEVICE_CNT 3 #define _TIMER_BASE_DEV0 0x01940000u #define _TIMER_BASE_DEV1 0x01980000u #define _TIMER_BASE_DEV2 0x01AC0000u#else #define TIMER_DEVICE_CNT 2 #define _TIMER_BASE_DEV0 0x01940000u #define _TIMER_BASE_DEV1 0x01980000u#endif/******************************************************************************\* module level register/field access macros\******************************************************************************/ /* ----------------- */ /* FIELD MAKE MACROS */ /* ----------------- */ #define TIMER_FMK(REG,FIELD,x)\ _PER_FMK(TIMER,##REG,##FIELD,x) #define TIMER_FMKS(REG,FIELD,SYM)\ _PER_FMKS(TIMER,##REG,##FIELD,##SYM) /* -------------------------------- */ /* RAW REGISTER/FIELD ACCESS MACROS */ /* -------------------------------- */ #define TIMER_ADDR(REG)\ _TIMER_##REG##_ADDR #define TIMER_RGET(REG)\ _PER_RGET(_TIMER_##REG##_ADDR,TIMER,##REG) #define TIMER_RSET(REG,x)\ _PER_RSET(_TIMER_##REG##_ADDR,TIMER,##REG,x) #define TIMER_FGET(REG,FIELD)\ _TIMER_##REG##_FGET(##FIELD) #define TIMER_FSET(REG,FIELD,x)\ _TIMER_##REG##_FSET(##FIELD,##x) #define TIMER_FSETS(REG,FIELD,SYM)\ _TIMER_##REG##_FSETS(##FIELD,##SYM) /* ------------------------------------------ */ /* ADDRESS BASED REGISTER/FIELD ACCESS MACROS */ /* ------------------------------------------ */ #define TIMER_RGETA(addr,REG)\ _PER_RGET(addr,TIMER,##REG) #define TIMER_RSETA(addr,REG,x)\ _PER_RSET(addr,TIMER,##REG,x) #define TIMER_FGETA(addr,REG,FIELD)\ _PER_FGET(addr,TIMER,##REG,##FIELD) #define TIMER_FSETA(addr,REG,FIELD,x)\ _PER_FSET(addr,TIMER,##REG,##FIELD,x) #define TIMER_FSETSA(addr,REG,FIELD,SYM)\ _PER_FSETS(addr,TIMER,##REG,##FIELD,##SYM) /* ----------------------------------------- */ /* HANDLE BASED REGISTER/FIELD ACCESS MACROS */ /* ----------------------------------------- */ #define TIMER_ADDRH(h,REG)\ (Uint32)(&((h)->baseAddr[_TIMER_##REG##_OFFSET])) #define TIMER_RGETH(h,REG)\ TIMER_RGETA(TIMER_ADDRH(h,##REG),##REG) #define TIMER_RSETH(h,REG,x)\ TIMER_RSETA(TIMER_ADDRH(h,##REG),##REG,x) #define TIMER_FGETH(h,REG,FIELD)\ TIMER_FGETA(TIMER_ADDRH(h,##REG),##REG,##FIELD) #define TIMER_FSETH(h,REG,FIELD,x)\ TIMER_FSETA(TIMER_ADDRH(h,##REG),##REG,##FIELD,x) #define TIMER_FSETSH(h,REG,FIELD,SYM)\ TIMER_FSETSA(TIMER_ADDRH(h,##REG),##REG,##FIELD,##SYM)/******************************************************************************\* _____________________* | |* | C T L |* |___________________|** CTL0 - timer control register 0* CTL1 - timer control register 1* CTL2 - timer control register 2 (1)** FIELDS (msb -> lsb)* (rw) SPND (1)* (r) TSTAT* (rw) INVINP* (rw) CLKSRC* (rw) CP* (rw) HLD* (rw) GO* (rw) PWID* (r) DATIN* (rw) DATOUT* (rw) INVOUT* (rw) FUNC** (1) - only supported on C64x devices\******************************************************************************/ #define _TIMER_CTL_OFFSET 0 #define _TIMER_CTL0_ADDR 0x01940000u #define _TIMER_CTL1_ADDR 0x01980000u #if (TIMER_DEVICE_CNT == 3) #define _TIMER_CTL2_ADDR 0x01AC0000u #endif #if (C64_SUPPORT) #define _TIMER_CTL_SPND_MASK 0x00008000u #define _TIMER_CTL_SPND_SHIFT 0x0000000Fu #define TIMER_CTL_SPND_DEFAULT 0x00000000u #define TIMER_CTL_SPND_OF(x) _VALUEOF(x) #define TIMER_CTL_SPND_EMUSTOP 0x00000001u #define TIMER_CTL_SPND_EMURUN 0x00000000u #endif #define _TIMER_CTL_TSTAT_MASK 0x00000800u #define _TIMER_CTL_TSTAT_SHIFT 0x0000000Bu #define TIMER_CTL_TSTAT_DEFAULT 0x00000000u #define TIMER_CTL_TSTAT_OF(x) _VALUEOF(x) #define TIMER_CTL_TSTAT_0 0x00000000u #define TIMER_CTL_TSTAT_1 0x00000001u #define _TIMER_CTL_INVINP_MASK 0x00000400u #define _TIMER_CTL_INVINP_SHIFT 0x0000000Au #define TIMER_CTL_INVINP_DEFAULT 0x00000000u #define TIMER_CTL_INVINP_OF(x) _VALUEOF(x) #define TIMER_CTL_INVINP_NO 0x00000000u #define TIMER_CTL_INVINP_YES 0x00000001u #define _TIMER_CTL_CLKSRC_MASK 0x00000200u #define _TIMER_CTL_CLKSRC_SHIFT 0x00000009u #define TIMER_CTL_CLKSRC_DEFAULT 0x00000000u #define TIMER_CTL_CLKSRC_OF(x) _VALUEOF(x) #define TIMER_CTL_CLKSRC_EXTERNAL 0x00000000u #if (C64_SUPPORT) #define TIMER_CTL_CLKSRC_CPUOVR8 0x00000001u #else #define TIMER_CTL_CLKSRC_CPUOVR4 0x00000001u #endif #define _TIMER_CTL_CP_MASK 0x00000100u #define _TIMER_CTL_CP_SHIFT 0x00000008u #define TIMER_CTL_CP_DEFAULT 0x00000000u #define TIMER_CTL_CP_OF(x) _VALUEOF(x) #define TIMER_CTL_CP_PULSE 0x00000000u #define TIMER_CTL_CP_CLOCK 0x00000001u #define _TIMER_CTL_HLD_MASK 0x00000080u #define _TIMER_CTL_HLD_SHIFT 0x00000007u #define TIMER_CTL_HLD_DEFAULT 0x00000000u #define TIMER_CTL_HLD_OF(x) _VALUEOF(x) #define TIMER_CTL_HLD_YES 0x00000000u #define TIMER_CTL_HLD_NO 0x00000001u #define _TIMER_CTL_GO_MASK 0x00000040u #define _TIMER_CTL_GO_SHIFT 0x00000006u #define TIMER_CTL_GO_DEFAULT 0x00000000u #define TIMER_CTL_GO_OF(x) _VALUEOF(x) #define TIMER_CTL_GO_NO 0x00000000u #define TIMER_CTL_GO_YES 0x00000001u #define _TIMER_CTL_PWID_MASK 0x00000010u #define _TIMER_CTL_PWID_SHIFT 0x00000004u #define TIMER_CTL_PWID_DEFAULT 0x00000000u #define TIMER_CTL_PWID_OF(x) _VALUEOF(x) #define TIMER_CTL_PWID_ONE 0x00000000u #define TIMER_CTL_PWID_TWO 0x00000001u #define _TIMER_CTL_DATIN_MASK 0x00000008u #define _TIMER_CTL_DATIN_SHIFT 0x00000003u #define TIMER_CTL_DATIN_DEFAULT 0x00000000u #define TIMER_CTL_DATIN_OF(x) _VALUEOF(x) #define TIMER_CTL_DATIN_0 0x00000000u #define TIMER_CTL_DATIN_1 0x00000001u #define _TIMER_CTL_DATOUT_MASK 0x00000004u #define _TIMER_CTL_DATOUT_SHIFT 0x00000002u #define TIMER_CTL_DATOUT_DEFAULT 0x00000000u #define TIMER_CTL_DATOUT_OF(x) _VALUEOF(x) #define TIMER_CTL_DATOUT_0 0x00000000u #define TIMER_CTL_DATOUT_1 0x00000001u #define _TIMER_CTL_INVOUT_MASK 0x00000002u #define _TIMER_CTL_INVOUT_SHIFT 0x00000001u #define TIMER_CTL_INVOUT_DEFAULT 0x00000000u
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -