📄 tvptimer.h
字号:
#ifndef TVP_TIMER_DOT_H_IS_DEFINED
#define TVP_TIMER_DOT_H_IS_DEFINED
/*****************************************************************************
* Property of Texas Instruments Incorporated, Copyright 2004
* All rights reserved
******************************************************************************/
/*********************************************************************
*
* Description:
* TvpTimer.h contains all TVP9000 timer related defines
*
*
**********************************************************************/
/*********************************************************************
*
* $Revision: $
*
* $History: TvpTimer.h $
*
*********************************************************************/
#define TVP_TIMER0 0 // timer 0
#define TVP_TIMER1 1 // timer 1
#define TVP_TIMER2 2 // timer 2
#define TVP_MAX_TIMER 2 // max number of timers
// 54Mhz Timer run constants
// periods = 1/CLK * prescale * divisor
#define TVP_TM_500NS_PS 2 // 500 nsec prescale
#define TVP_TM_500NS_DV 9 // 500 nsec divisor
#define TVP_TM_1US_PS 2 // 1 usec prescale
#define TVP_TM_1US_DV 18 // 1 usec divisor
#define TVP_TM_10US_PS 3 // 10 usec prescale
#define TVP_TM_10US_DV 135 // 10 usec divisor
#define TVP_TM_50US_PS 3 // 50 usec prescale
#define TVP_TM_50US_DV 675 // 50 usec divisor
#define TVP_TM_100US_PS 7 // 100 usec prescale
#define TVP_TM_100US_DV 675 // 100 usec divisor
#define TVP_TM_200US_PS 7 // 200 usec prescale
#define TVP_TM_200US_DV 1350 // 200 usec divisor
#define TVP_TM_500US_PS 7 // 500 usec prescale
#define TVP_TM_500US_DV 3375 // 500 usec divisor
#define TVP_TM_1MS_PS 15 // 1 ms prescale
#define TVP_TM_1MS_DV 3375 // 1 ms divisor
#define TVP_TM_2MS_PS 15 // 2 ms prescale
#define TVP_TM_2MS_DV 6750 // 2 ms divisor
#define TVP_TM_5MS_PS 15 // 5 ms prescale
#define TVP_TM_5MS_DV 16875 // 5 ms divisor
#define TVP_TM_10MS_PS 15 // 10 ms prescale
#define TVP_TM_10MS_DV 33750 // 10 ms divisor
#define TVP_TM_20MS_PS 30 // 20 ms prescale
#define TVP_TM_20MS_DV 33750 // 20 ms divisor
#define TVP_TM_100MS_PS 159 // 100 ms prescale
#define TVP_TM_100MS_DV 33750 // 100 ms divisor
#define TVP_TM_200MS_PS 318 // 200 ms prescale
#define TVP_TM_200MS_DV 33750 // 200 ms divisor
#define TVP_TM_1000MS_PS 1599 // 1S prescale
#define TVP_TM_1000MS_DV 33750 // 1S divisor
#define TVP_TIMER_500NS (TVP_TM_500NS_PS << 16) | (TVP_TM_500NS_DV) // timer at 500nsec
#define TVP_TIMER_1US (TVP_TM_1US_PS << 16) | (TVP_TM_1US_DV) // timer at 1usec
#define TVP_TIMER_10US (TVP_TM_10US_PS << 16) | (TVP_TM_10US_DV) // timer at 10usec
#define TVP_TIMER_100US (TVP_TM_100US_PS << 16) | (TVP_TM_100US_DV) // timer at 100usec
#define TVP_TIMER_200US (TVP_TM_200US_PS << 16) | (TVP_TM_200US_DV) // timer at 100usec
#define TVP_TIMER_500US (TVP_TM_500US_PS << 16) | (TVP_TM_500US_DV) // timer at 500usec
#define TVP_TIMER_1MS (TVP_TM_1MS_PS << 16) | (TVP_TM_1MS_DV) // timer at 1ms
#define TVP_TIMER_2MS (TVP_TM_2MS_PS << 16) | (TVP_TM_2MS_DV) // timer at 2ms
#define TVP_TIMER_10MS (TVP_TM_10MS_PS << 16) | (TVP_TM_10MS_DV) // timer at 10ms
#define TVP_TIMER_20MS (TVP_TM_20MS_PS << 16) | (TVP_TM_20MS_DV) // timer at 20ms
#define TVP_TIMER_100MS (TVP_TM_100MS_PS << 16) | (TVP_TM_100MS_DV) // timer at 100ms
#define TVP_TIMER_200MS (TVP_TM_200MS_PS << 16) | (TVP_TM_200MS_DV) // timer at 200ms
#define TVP_TIMER_1S (TVP_TM_1000MS_PS << 16) | (TVP_TM_1000MS_DV) // timer at 1 sec
// TCR register - timer constants bit positions (n) default
#define TVP_TRB 0x01 // (0) timer reload
// 0 = timer no load
// 1 = timer reload
#define TVP_TSS 0x02 // (0) timer stop
// 0 = timer run
// 1 = timer stop
#define TVP_SOFTN 0x04 // (0) timer auto reload
// 0 = reload and run again
// 1 = 1 shot and stop
#define TVP_SOFTE 0x08 // (0) emulation mode soft bit
// 0 = ??
// 1 = ??
#define TVP_FREE 0x10 // (0) emulation mode free bit
// 0 = ??
// 1 = ??
#define TVP_TINTM 0x20 // (0) timer interrupt mask
// 0 = no mask tint
// 1 = mask tint
#define TVP_TIMER_AUTO_RELOAD TVP_TRB // auto load and run
#define TVP_TIMER_STOP TVP_TSS // Timer Stop
#define TVP_TIMER_ONE_SHOT (TVP_SOFTN | TVP_TRB) // Run One Shot and stop
#define TVP_TIMER_MASK_INT TVP_TINTM // Mask Interrupt (or this value in with previous commands)
typedef struct
{
unsigned long timer; // TVP_TIMER0
// TVP_TIMER1
// TVP_TIMER2
unsigned long ctrl; // TVP_TIMER_AUTO_RELOAD | TVP_TIMER_MASK_INT
// TVP_TIMER_ONE_SHOT | TVP_TIMER_MASK_INT
// TVP_TIMER_STOP | TVP_TIMER_MASK_INT
TvpIntExec func; // *ptr to Timer handler
unsigned long tic; // timer load value or read vlaue on timerRead()
// TVP_TIMER_1MS 1 msec
// TVP_TIMER_10MS 10 msec
// TVP_TIMER_100MS 100 msec
// TVP_TIMER_1S 1 Second
} TvpHWTimer;
/*----------------------**
** Watchdog time values **
**----------------------*/
#define TVP_KICK_LOCK_0 0x5555
#define TVP_KICK_LOCK_1 0xaaaa
#define TVP_CHANGE_LOCK_0 0x6666
#define TVP_CHANGE_LOCK_1 0xbbbb
#define TVP_DISABLE_LOCK_0 0x7777
#define TVP_DISABLE_LOCK_1 0xcccc
#define TVP_DISABLE_LOCK_2 0xdddd
#define TVP_PRESCALE_LOCK_0 0x5a5a
#define TVP_PRESCALE_LOCK_1 0xa5a5
#define TVP_WD_KICK_LOCK_REG (TVP_WD_TIMER_BASE+0x0)
#define TVP_WD_KICK_REG (TVP_WD_TIMER_BASE+0x1)
#define TVP_WD_CHANGE_LOCK_REG (TVP_WD_TIMER_BASE+0x2)
#define TVP_WD_CHANGE_REG (TVP_WD_TIMER_BASE+0x3)
#define TVP_WD_ENABLE_LOCK_REG (TVP_WD_TIMER_BASE+0x4)
#define TVP_WD_ENABLE_REG (TVP_WD_TIMER_BASE+0x5)
#define TVP_WD_PRESCALE_LOCK_REG (TVP_WD_TIMER_BASE+0x6)
#define TVP_WD_PRESCALE_REG (TVP_WD_TIMER_BASE+0x7)
#define TVP_WD_PRESCALE_HALF_MS 0xd2f0 // Prescale for 0.5ms
#define TVP_WD_MAX_TIMER_VALUE 0x7fff
typedef unsigned short TvpWDTime;
#ifdef __cplusplus
extern "C" {
#endif
TVP_FERROR tvpTimerInit(TvpHWTimer *); // init timer
TVP_FERROR tvpTimerRead(TvpHWTimer *); // read timer
TVP_FERROR tvpTimerSet (TvpHWTimer *); // set timer wo interrupt hooks
TVP_FERROR tvpWatchDogTimerEnable(TvpWDTime msecs);
void tvpWatchDogTimerDisable (void);
void tvpWatchDogTimerKick (void);
#ifdef __cplusplus
};
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -