📄 timer.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 + -