📄 timer2_64x.h
字号:
/******************************************************************************/
/* TIMER2_64x.H - TMS320C6x Peripheral Support Library Timers Support */
/* FUNCTIONS: */
/* timer_delay() - delay specified number of timer periods */
/* */
/******************************************************************************/
#ifndef _TIMER2_64x_H_
#define _TIMER2_64x_H_
/*----------------------------------------------------------------------------*/
/* INCLUDES */
/*----------------------------------------------------------------------------*/
#include "regs.h"
#include "timer.h"
/*----------------------------------------------------------------------------*/
/* DEFINES AND MACROS */
/*----------------------------------------------------------------------------*/
/******************************************************************************/
/**************************** TIMER REGISTERS *********************************/
#define TIMER2_CTRL_ADDR 0x01AC0000
#define TIMER2_PERIOD_ADDR 0x01AC0004
#define TIMER2_COUNTER_ADDR 0x01AC0008
#define TIMER2_CTRL *(volatile unsigned int *)(TIMER2_CTRL_ADDR)
#define TIMER2_PERIOD *(volatile unsigned int *)(TIMER2_PERIOD_ADDR)
#define TIMER2_COUNTER *(volatile unsigned int *)(TIMER2_COUNTER_ADDR)
/*---------------------------------------------------------------------------*/
/* TIMER_RESET - reset timer to conditions defined by device reset */
/*---------------------------------------------------------------------------*/
#define TIMER2_RESET() \
{ (*(unsigned int *)(TIMER2_CTRL_ADDR) = 0); \
(*(unsigned int *)(TIMER2_PERIOD_ADDR) = 0); \
(*(unsigned int *)(TIMER2_COUNTER_ADDR) = 0); \
}
/*---------------------------------------------------------------------------*/
/* TIMER_INIT - initialize timer registers */
/*---------------------------------------------------------------------------*/
#define TIMER2_INIT(ctrl,per,cnt) \
{ (*(unsigned int *)(TIMER2_CTRL_ADDR) = ctrl); \
(*(unsigned int *)(TIMER2_PERIOD_ADDR) = per); \
(*(unsigned int *)(TIMER2_COUNTER_ADDR) = cnt); \
}
/*---------------------------------------------------------------------------*/
/* TIMER_START - Sets both GO and HOLD bits in Timer Control Register which */
/* resets the Timer Counter Register and enables counting on */
/* on the next clock. (GO bit autoclears) */
/*---------------------------------------------------------------------------*/
#define TIMER2_START() \
REG_WRITE(TIMER2_CTRL_ADDR,(REG_READ(TIMER2_CTRL_ADDR) | 0xc0))
/*---------------------------------------------------------------------------*/
/* TIMER_STOP - Asserts (clears) the HOLD bit in the Timer Control Register */
/*---------------------------------------------------------------------------*/
#define TIMER2_STOP() \
RESET_BIT(TIMER2_CTRL_ADDR,HLD)
/*---------------------------------------------------------------------------*/
/* TIMER_RESUME - Negates (sets) the HOLD bit to resume counting without */
/* resetting the counter register */
/*---------------------------------------------------------------------------*/
#define TIMER2_RESUME() \
SET_BIT(TIMER2_CTRL_ADDR,HLD)
/*---------------------------------------------------------------------------*/
/* TIMER_MODE_SELECT - selects between PULSE and CLOCK modes */
/*---------------------------------------------------------------------------*/
#define TIMER2_MODE_SELECT(mode) \
(mode == TIMER_CLOCK_MODE) ? SET_BIT(TIMER2_CTRL_ADDR,C_P) \
: RESET_BIT(TIMER2_CTRL_ADDR,C_P)
/*---------------------------------------------------------------------------*/
/* TIMER_CLK_INTERNAL - sets CLKSRC to select CPU clock/4 as timer clock */
/*---------------------------------------------------------------------------*/
#define TIMER2_CLK_INTERNAL() \
SET_BIT(TIMER2_CTRL_ADDR,CLKSRC)
/*---------------------------------------------------------------------------*/
/* TIMER_CLK_EXTERNAL - clears CLKSRC to select TINP as timer clock */
/*---------------------------------------------------------------------------*/
#define TIMER2_CLK_EXTERNAL() \
RESET_BIT(TIMER2_CTRL_ADDR,CLKSRC)
/*---------------------------------------------------------------------------*/
/* TOUT_ENABLE - configures TOUT as general purpose output pin. */
/* */
/*---------------------------------------------------------------------------*/
#define TIMER2_TOUT_DISABLE() \
RESET_BIT(TIMER2_CTRL_ADDR,FUNC)
/*---------------------------------------------------------------------------*/
/* TOUT_DISABLE - configures TOUT as a timer pin; reflects value of TSTAT */
/* conditioned by INVOUT */
/*---------------------------------------------------------------------------*/
#define TIMER2_TOUT_ENABLE() \
SET_BIT(TIMER2_CTRL_ADDR,FUNC)
/*---------------------------------------------------------------------------*/
/* TOUT_VAL - assigns val to TOUT pin when TOUT is enabled as general purpose*/
/* output */
/*---------------------------------------------------------------------------*/
#define TIMER2_TOUT_VAL(val) \
ASSIGN_BIT_VAL(TIMER2_CTRL_ADDR,DATOUT,val)
/*---------------------------------------------------------------------------*/
/* TOUT_ASSERT - assigns 1 to TOUT pin when TOUT is enabled as general */
/* purpose output */
/*---------------------------------------------------------------------------*/
#define TIMER2_TOUT_ASSERT() \
SET_BIT(TIMER2_CTRL_ADDR,DATOUT)
/*---------------------------------------------------------------------------*/
/* TOUT_NEGATE - assigns 0 to TOUT pin when TOUT is enabled as general */
/* purpose output */
/*---------------------------------------------------------------------------*/
#define TIMER2_TOUT_NEGATE() \
RESET_BIT(TIMER2_CTRL_ADDR,DATOUT)
/*---------------------------------------------------------------------------*/
/* TINP_GET - returns value on TINP input pin */
/*---------------------------------------------------------------------------*/
#define TIMER2_TINP_GET() \
GET_BIT(TIMER2_CTRL_ADDR,DATIN)
/*---------------------------------------------------------------------------*/
/* TIMER_READ - reads value of Timer Counter Register */
/*---------------------------------------------------------------------------*/
#define TIMER2_TIMER_READ() \
(REG_READ(TIMER2_COUNTER_ADDR))
/*---------------------------------------------------------------------------*/
/* TIMER_GET_COUNT - reads value of Timer Counter Register */
/*---------------------------------------------------------------------------*/
#define TIMER2_GET_COUNT() \
(REG_READ(TIMER2_COUNTER_ADDR))
/*---------------------------------------------------------------------------*/
/* TIMER_SET_COUNT - reads value of Timer Counter Register */
/*---------------------------------------------------------------------------*/
#define TIMER2_SET_COUNT(val) \
(REG_WRITE(TIMER2_COUNTER_ADDR,val))
/*---------------------------------------------------------------------------*/
/* TIMER_AVAILABLE - checks timer for availability; returns TRUE or FALSE */
/*---------------------------------------------------------------------------*/
#define TIMER2_AVAILABLE() \
(GET_BIT(TIMER2_CTRL_ADDR,HLD) ? 0 : 1)
/*---------------------------------------------------------------------------*/
/* TIMER_SET_PERIOD - sets value of Timer Period Register */
/*---------------------------------------------------------------------------*/
#define TIMER2_SET_PERIOD(val) \
(REG_WRITE(TIMER2_PERIOD_ADDR,val))
/*---------------------------------------------------------------------------*/
/* TIMER_GET_PERIOD - returns value of Timer Period Register */
/*---------------------------------------------------------------------------*/
#define TIMER2_GET_PERIOD() \
(REG_READ(TIMER2_PERIOD_ADDR))
/*---------------------------------------------------------------------------*/
/* TIMER_GET_TSTAT - returns value of TSTAT bit in Timer Ctrl Register */
/*---------------------------------------------------------------------------*/
#define TIMER2_GET_TSTAT() \
(GET_BIT(TIMER2_CTRL_ADDR,TSTAT))
/*----------------------------------------------------------------------------*/
/* GLOBAL VARIABLES */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* FUNCTIONS */
/*----------------------------------------------------------------------------*/
int timer_delay(short num_timer_periods);
#endif /* ifndef _TIMER_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -