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

📄 timer.h

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
===============================================================================
//            TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION           
//                                                                             
//   Property of Texas Instruments 
//   For  Unrestricted  Internal  Use  Only 
//   Unauthorized reproduction and/or distribution is strictly prohibited.  
//   This product is protected under copyright law and trade secret law 
//   as an unpublished work.  
//   Created 1999, (C) Copyright 1999 Texas Instruments.  All rights reserved.
//
//
//   Filename       	: timer.h
//
//   Description    	: Header file for the arm9 Timers (ostimer1, ostimer2, 
//                        ostimer3, wdgtimer)
//
//   Project        	: omap3
//
//   Author         	: Daniel Blanc dblanc@tif.ti.com
//   Modified for omap3 by Arnaud Balmelle (a-balmelle@ti.com)
//   - Added OSTIMER3 for OMAP3
//
===============================================================================
*/
#ifndef _TIMER__HH
#define _TIMER__HH

#include "top.h"
#include "mem.h"

/*------------------------------------------------------------------------
       WATCHDOG  TIMER  REGISTER                                        -
------------------------------------------------------------------------
*/
/* CNT register */
/*---------------*/
#define WDGTIMER_CNTL_SUP_REG    REG32(MEM_WATCH_DOG_TIMER_SUPERVISOR_ADDR)
#define WDGTIMER_CNTL_USR_REG    REG32(MEM_WATCH_DOG_TIMER_USER_ADDR)

/* debug mode Suspended or running free Mask */
#define	WDGTIMER_FREE_MASK	0x0002

/* State Stopped/Started Mask */	
#define	WDGTIMER_ST_MASK	0x0080

/* AutoReload/One Shot mode Mask */		 
#define	WDGTIMER_AR_MASK	0x0100

/* Prescale Timer Value Mask */		 
#define	WDGTIMER_PTV_MASK	0x0e00

/* Control Timer bit position  */	 
#define	WDGTIMER_FREE_BITPOS    1	
#define	WDGTIMER_ST_BITPOS	7		 
#define	WDGTIMER_AR_BITPOS      8		 
#define	WDGTIMER_PTV_BITPOS     9

/* LOAD_TIM an READ_TIM registers */
/*-------------------*/
/* Timer load register (WRITE only) */ 
#define WDGTIMER_LOAD_REG    REG32((MEM_WATCH_DOG_TIMER_SUPERVISOR_ADDR + 0x04)) 
/* Timer read register (READ only) */  
#define WDGTIMER_READ_REG    REG32((MEM_WATCH_DOG_TIMER_USER_ADDR + 0x04))   


/* TIMER_MODE register
-----------------------*/ 
#define WDGTIMER_MODE_USR_REG    REG32((MEM_WATCH_DOG_TIMER_USER_ADDR + 0x08))  
#define WDGTIMER_MODE_SUP_REG    REG32((MEM_WATCH_DOG_TIMER_SUPERVISOR_ADDR + 0x08))  // MHV
#define WDGTIMER_DIS_MASK            0x00ff  /* watch dog disable mask */
#define WDGTIMER_WDOG_MASK	     0x8000  /* watch dog mask */

/* LABEL for 
-----------------------*/ 
#define WDG_MODE                    TRUE
#define TIMER_MODE                  FALSE
	 

/* Control Timer Register bit pos */	 

/*----------------------------------------------------------------------
       OSTIMER COMMON INFO  
------------------------------------------------------------------------
*/
#define	OSTIMER_ST_BITPOS      0		 
#define	OSTIMER_AR_BITPOS      1		 
#define	OSTIMER_PTV_BITPOS     2
#define	OSTIMER_CLKEN_BITPOS   5	
#define	OSTIMER_FREE_BITPOS    6	
#define	OSTIMER_SOFT_BITPOS    7	

/* State Stopped/Started Mask */	
#define	OSTIMER_ST_MASK	0x00000001

/* AutoReload/One Shot mode Mask */		 
#define	OSTIMER_AR_MASK	0x00000002

/* Prescale Timer Value Mask */		 
#define	OSTIMER_PTV_MASK	0x0000001C

/* External clock enable Mask */		 
#define	OSTIMER_CLKEN_MASK	0x00000020

/* debug mode Suspended or running free Mask */
#define	OSTIMER_FREE_MASK	0x00000040

/* Soft bit Mask */
#define	OSTIMER_SOFT_MASK	0x00000080

/*----------------------------------------------------------------------
       OSTIMER1  REGISTERS 
------------------------------------------------------------------------
*/
/* CNT register */
/*---------------*/
#define OSTIMER1_CNTL_SUP_REG       REG32(MEM_TIMER_1_SUPERVISOR_ADDR)  
#define OSTIMER1_CNTL_USR_REG       REG32(MEM_TIMER_1_USER_ADDR) 

/* LOAD_TIM an READ_TIM registers */
/*-------------------*/
/* Timer load register (WRITE only) */ 
#define OSTIMER1_LOAD_REG    REG32((MEM_TIMER_1_SUPERVISOR_ADDR + 0x04)) 
/* Timer read register (READ only) */  
#define OSTIMER1_READ_LOAD_REG  REG32((MEM_TIMER_1_USER_ADDR + 0x04))   
/* Timer read register (READ only) */  
#define OSTIMER1_READ_REG    REG32((MEM_TIMER_1_USER_ADDR + 0x08))   

/*----------------------------------------------------------------------
       OSTIMER2  REGISTERS 
------------------------------------------------------------------------
*/
/* CNT register */
/*---------------*/
#define OSTIMER2_CNTL_SUP_REG       REG32(MEM_TIMER_2_SUPERVISOR_ADDR)  
#define OSTIMER2_CNTL_USR_REG       REG32(MEM_TIMER_2_USER_ADDR)   

/* LOAD_TIM an READ_TIM registers */
/*-------------------*/
/* Timer load register (WRITE only) */ 
#define OSTIMER2_LOAD_REG    REG32((MEM_TIMER_2_SUPERVISOR_ADDR + 0x04))
/* Timer read register (READ only) */  
#define OSTIMER2_READ_LOAD_REG  REG32((MEM_TIMER_2_USER_ADDR + 0x04)) 
/* Timer read register (READ only) */  
#define OSTIMER2_READ_REG    REG32((MEM_TIMER_2_USER_ADDR + 0x08))

/*----------------------------------------------------------------------
       OSTIMER3  REGISTERS 
------------------------------------------------------------------------
*/
/* CNT register */
/*---------------*/
#define OSTIMER3_CNTL_SUP_REG       REG32(MEM_TIMER_3_SUPERVISOR_ADDR)  
#define OSTIMER3_CNTL_USR_REG       REG32(MEM_TIMER_3_USER_ADDR)   

/* LOAD_TIM an READ_TIM registers */
/*-------------------*/
/* Timer load register (WRITE only) */ 
#define OSTIMER3_LOAD_REG    REG32((MEM_TIMER_3_SUPERVISOR_ADDR + 0x04))
/* Timer read register (READ only) */  
#define OSTIMER3_READ_LOAD_REG  REG32((MEM_TIMER_3_USER_ADDR + 0x04))
/* Timer read register (READ only) */  
#define OSTIMER3_READ_REG    REG32((MEM_TIMER_3_USER_ADDR + 0x08))

//---------------------------------
//  definition for test           
// and return status              
//---------------------------------- 
//Reset value of ostimer cntl register
#define MASK_OSTIMER_CNTL_RESET    0x0000007F
#define OSTIMER_CNTL_RESET         0x00000000

//   Reset value of wdg cntl register
#define MASK_WDG_CNTL_RESET        0x0F82
#define WDGTIMER_CNTL_RESET        0x0002

//   Reset value of wdg cntl register
#define MASK_WDG_TIMER_RESET       0xFFFF
#define WDGTIMER_RESET             0xFFFF

#define WDG_RESET_MODE             WDG_MODE




/*-----------------------------------------------------------
*/
/*-----------------------------------------------
  TIMER_NAME_t 
  specifies the name of the timer 
  on which we are going to work
-------------------------------------------------------------
*/
typedef enum {
  OSTIMER1     = 0,  /*  */
  OSTIMER2     = 1,  /*  */
  OSTIMER3     = 2,  /*  */
  WDGTIMER     = 3   /*  */
} TIMER_NAME_t;


/*
----------------------------------------------------------------
  TIMER_FREE_t
  Specifies whether the timer is suspended while in debug mode
  or the timer runs free, regardless of nsuspend value
----------------------------------------------------------------
*/
typedef enum {
  TIMER_FROZEN = 0, /* Timer in Debug mode */
  TIMER_FREE   = 1  /* Timer Runs free */
} TIMER_FREE_t;

/*
------------------------------------------------------
  TIMER_STATE_t 
  Specifies whether the timer is running or not 
------------------------------------------------------
*/
typedef enum {
 TIMER_STOPPED = 0,
 TIMER_STARTED = 1
} TIMER_STATE_t;


/*
-------------------------------------------------------------
  TIMER_MODE_t 
  specifies the auto-initialization mode which the Timer 
  can automatically reinitializes itself after timeout
-------------------------------------------------------------
*/
typedef enum {
  TIMER_ONESHOT_MODE    = 0, /* Timer Stops when reach zero */
  TIMER_AUTORELOAD_MODE = 1  /* Timer Restarts when reach zero */
} TIMER_MODE_t;

/*
---------------------------------------------------------------
  TIMER_SCALER_t 
  Pre-scaler field value used jointly with the load value 
  to define the timer interrupt period
---------------------------------------------------------------
*/
typedef enum {
  TIMER_PRE_SCALE_2   = 0, /* for Lowest period */
  TIMER_PRE_SCALE_4   = 1,
  TIMER_PRE_SCALE_8   = 2,
  TIMER_PRE_SCALE_16  = 3,
  TIMER_PRE_SCALE_32  = 4,
  TIMER_PRE_SCALE_64  = 5,
  TIMER_PRE_SCALE_128  = 6,
  TIMER_PRE_SCALE_256  = 7 /* for Highest period */
} TIMER_SCALER_t;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//                   Functions provided
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//-------------------------------------------------------------------------------
//           Be carreful to use after DisableWdg
//-------------------------------------------------------------------------------
// NAME        : TIME_SetupTimer                                                  -
// DESCRIPTION : Setup the timer configuration                                  -
// SYNOPSYS    : void  ConfigureTimer ( TIMER_NAME_t      TimerName,
//                                      UWORD32           LoadValue,            -
//                                      TIMER_MODE_t      TimerMode,            -
//                                      TIMER_SCALER_t    TimerScaler)          -
// PARAMETERS  :                                                                -
//   TimerName  = Precise on which timer we work
//                                               OSTIMER1
//                                               OSTIMER2
//                                               OSTIMER3
//                                               WDGTIMER
//                               
//                                                                              -
//   LoadValue  = Timer setup value is loaded when timer passes through 0       -
//               or when it starts                                              -
//                                                                              -
//   TimerMode  = Specify the timer mode (only used for watchdog timer)         -
//     -TIMER_ONESHOT_MODE     => the timer decrements from the loaded value to zero   -

⌨️ 快捷键说明

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