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

📄 timer.h

📁 Real-Time Digital Signal Processing Implementations, Applications, and Experiments with the TMS320C
💻 H
字号:
/******************************************************************/
/* timer.h - v0.00                                                */
/* Copyright (c) 1997 Texas Instruments Incorporated              */
/******************************************************************/
#ifndef _TIMER55X_H_
#define _TIMER55X_H_

/******************************************************************/
/* Define Timer Period, and Control Registers with all related    */
/* data structures, macros, and functions                         */
/******************************************************************/
#include "regs55x.h"

/******************************************************************/
/* Data bitfields Period for Timer                                */
/******************************************************************/
//TCR
#define DATOUT			1
#define DATOUT_SZ		1

#define POLAR			2
#define POLAR_SZ		1

#define CP				3
#define CP_SZ			1

#define TSS				4
#define TSS_SZ			1

#define ARB				5
#define ARB_SZ			1

#define PWID			6
#define PWID_SZ			2

#define TIM_FREE		8
#define TIM_FREE_SZ		1

#define TMSOFT			9
#define TMSOFT_SZ		2

#define TLB				10
#define TLB_SZ			1

#define FUNC			11
#define FUNC_SZ			2

#define ERR_TIM			13
#define ERR_TIM_SZ		1

#define INT_EXT			14
#define INT_EXT_SZ		1

#define IDLE_EN			15
#define IDLE_EN_SZ		1

//PRSC
#define TDDR			0
#define TDDR_SZ			4

#define PSC				6
#define PSC_SZ			4

/*******************************************************************/
/* TIMER REGISTER ADDRESSES   (TIM0 = Timer 0, TIM1 = Timer 1      */
/* Defined for all devices                                         */
/*******************************************************************/
#define TIM_ADDR(port)	(port ? 0x2400 : 0x1000)
#define TIM(port)		*(ioport volatile unsigned int*)TIM_ADDR(port)

#define PRD_ADDR(port)	(port ? 0x2401 : 0x1001)
#define PRD(port)		*(ioport volatile unsigned int*)PRD_ADDR(port)

#define TCR_ADDR(port)	(port ? 0x2402 : 0x1002)
#define TCR(port)		*(ioport volatile unsigned int *)TCR_ADDR(port)

#define PRSC_ADDR(port)	(port ? 0x2403 : 0x1003)
#define PRSC(port)      *(ioport volatile unsigned int*)PRSC_ADDR(port)

/*********************************************************************/
/* CONFIGURATION REGISTER BIT and BITFIELD values                    */
/*********************************************************************/
//Timer port assignments
#define TIMER_PORT0     0
#define TIMER_PORT1     1
 
//Timer Control Register TCR 
#define FUNC_00         0x00	//TIN/TOUT is an input pin          
#define FUNC_01         0x01	//TIN/TOUT is a timer output pin          
#define FUNC_10         0x02	//TIN/TOUT is a timer input pin          
#define FUNC_11         0x03	//TIN/TOUT is a general purpose output pin          

#define PWID_1			0x00	//TIN/TOUT pulse = 1 CLKOUT period
#define PWID_2			0x01	//TIN/TOUT pulse = 2 CLKOUT periods
#define PWID_4			0x02	//TIN/TOUT pulse = 4 CLKOUT periods
#define PWID_8			0x03	//TIN/TOUT pulse = 8 CLKOUT periods
                                                                              
/******************************************************************/
/* TIMER_START - starts timer operation                           */
/******************************************************************/
#define TIMER_START(port)\
		TCR(port) &= ~(1<<TSS)

/******************************************************************/
/* TIMER_HALT - halts timer operation                             */
/******************************************************************/
#define TIMER_HALT(port)\
		TCR(port) |= (1<<TSS)

/******************************************************************/
/* TIMER_INIT (ctrl, prd) - init and start timer                  */
/*  ctrl - mask used to set timer control register                */
/*  prd  - value to set timer period register                     */
/******************************************************************/
#define TIMER_INIT(port, ctrl, prd, tddr)\
       {TIMER_HALT(port);\
        TCR(port) = ctrl;\
        PRD(port) = prd;\
		PRSC(port) = tddr & 0xf;\
        TIMER_RELOAD(port);}

/******************************************************************/
/* timer_reset - reset timer to conditions defined by device reset*/
/*  i.e.  period = 0xffff    , tddr = 0x000                       */
/******************************************************************/
#define TIMER_RESET(port)\
	   {TIMER_HALT(port);\
		PRSC(port) = 0x0000;\
		PRD(port) = 0xffff;\
		TIMER_START(port);}

/******************************************************************/
/* TIMER_RELOAD() - reloads timer with previously set             */
/*                  period value, etc..                           */
/******************************************************************/
#define TIMER_RELOAD(port)\
	   {TIMER_HALT(port);\
		TCR(port) |= (1<<ARB) | (1<<TLB);\
        TCR(port) &= ~(1<<TLB);\
		TIMER_START(port); }

/******************************************************************/
/* TIMER_READ - reads current value of timer                      */
/******************************************************************/
#define TIMER_READ(port)\
		TIM(port)

#endif  //_TIMER55X_H_ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -