📄 csl_timerhal.h
字号:
/******************************************************************************\
* Copyright (C) 2000 Texas Instruments Incorporated.
* All Rights Reserved
*------------------------------------------------------------------------------
* FILENAME...... csl_timerhal.h
* DATE CREATED.. 08/14/2000
* LAST MODIFIED. 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_6412 | CHIP_6411)
#define TIMER_DEVICE_CNT 3
#define _TIMER_BASE_DEV0 0x01940000u
#define _TIMER_BASE_DEV1 0x01980000u
#define _TIMER_BASE_DEV2 0x01AC0000u
#endif
#if !(CHIP_6414 | CHIP_6415 | CHIP_6416 | CHIP_DM642 | CHIP_6412 | CHIP_6411)
#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -