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

📄 timer2_64x.h

📁 DSP的集成开发
💻 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 + -