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

📄 global_types.h

📁 有关于USB的一些主机端驱动
💻 H
字号:
//-------------------------------------------------------------------------------
//            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 2000, (C) Copyright 2000 Texas Instruments.  All rights reserved.
//
//-------------------------------------------------------------------------------


#ifndef _GLOBAL_TYPES_H
#define _GLOBAL_TYPES_H

//-------------------------------------------------------------------------------
//
// TYPE DEFINITION
//
//-------------------------------------------------------------------------------

typedef unsigned char           UWORD8;
typedef unsigned char           UCHAR;
typedef signed   char           WORD8;


typedef unsigned short          UWORD16;
typedef          short          WORD16;
typedef unsigned int            BIT;

//int and long both fit to 32 bits
typedef unsigned long           UWORD32;
typedef          long           WORD32;


//USE VOLATILE TO PREVENT OPTIMISATION FROM COMPILER
typedef volatile unsigned char  REG_UWORD8;
typedef volatile signed   char  REG_WORD8;

typedef volatile unsigned short REG_UWORD16;
typedef volatile          short REG_WORD16;

//int and long both fit to 32 bits
typedef volatile unsigned long  REG_UWORD32;
typedef volatile          long  REG_WORD32;

typedef enum  {FALSE= 0, TRUE=1 }    BOOL;

#define NO                      FALSE
#define YES                     TRUE

#define ENABLE                  TRUE
#define DISABLE                 FALSE

#define HIGH_LEVEL              TRUE
#define LOW_LEVEL               FALSE

#define NOT_OK                  FALSE
#define IS_OK                   TRUE


//-------------------------------------------------------------------------------
//
// MACROS TO ACCESS REGISTERS
//
//-------------------------------------------------------------------------------
#define REG8(A)                 (*(REG_UWORD8*)(A))
#define REG16(A)                (*(REG_UWORD16*)(A))
#define REG32(A)                (*(REG_UWORD32*)(A))


//-------------------------------------------------------------------------------
//
// MACROS FOR BIT FIELD MANIPULATION
//
//-------------------------------------------------------------------------------

//==To be removed
#define SetBit(registre,masq)                 (registre|=masq)
#define ClearBit(registre,masq)               (registre&=~masq)
#define TestBit(registre,masq)                (registre&masq)
#define TestBitValue(registre,masq,value)     ((registre&masq)==value)
//==To be removed

#define SetBitIndex(registre,index)     (registre|=(1<<index))
#define ClearBitIndex(registre,index)   (registre&=~(1<<index))
#define TestBitIndex(registre,index)    (registre&(1<<index))

#define GetGroupBits(registre,position,number)          ((registre & ((0xFFFFFFFF>>(32-number))<<position))>>position)
#define SetGroupBits(registre,position,number,value)    registre&=~((0xFFFFFFFF>>(32-number))<<position);\
                                                        registre|=(value<<position)


#define GetGroupBits8(registre,position,number)            (((registre) & ((0xFF>>(8-(number)))<<(position)))>>(position))
#define SetGroupBits8(registre,position,width,value)\
                                                           registre&=~( (0xFF>> (8-(width)) ) <<(position) );\
                                                           registre|=( (value&(0xFF>> (8-(width)) )) <<(position) )

#define GetGroupBits16(registre,position,number)           (((registre) & ((0xFFFF>>(16-(number)))<<(position)))>>(position))
#define SetGroupBits16(registre,position,width,value)\
                                                           registre&=~((0xFFFF>>(16-(width)))<<(position));\
                                                           registre|=((value&(0xFFFF>>(16-(width))))<<(position))

#define GetGroupBits32(registre,position,number)           GetGroupBits(registre,position,number)
#define SetGroupBits32(registre,position,width,value)      SetGroupBits(registre,position,width,value)
   

#define SetField(Register,FieldName,Value)    SetGroupBits(Register,FieldName ## _POS,FieldName ## _NUMB, Value)
#define GetField(Register,FieldName)          GetGroupBits(Register,FieldName ## _POS,FieldName ## _NUMB)


//-------------------------------------------------------------------------------
//
// MACROS FOR CONDITIONAL STATEMENT
//
//-------------------------------------------------------------------------------

#define AND                            &&
#define OR                             ||
#define NOT                             !
#define EQU                            ==



#endif

⌨️ 快捷键说明

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