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

📄 global.h

📁 实现快速傅立叶变换算法,provides test framwork for FFT testing
💻 H
📖 第 1 页 / 共 5 页
字号:
/****************************************************************************

    global project definition file

    12.06.1998   -rs
    11.02.2002   r.d. Erweiterungen, Ergaenzungen
    20.08.2002   SYS TEC electronic -as
                 Definition Schluesselwort 'GENERIC'
                 fuer das Erzeugen von Generic Pointer
    28.08.2002   r.d. erweiterter SYS TEC Debug Code
    16.09.2002   r.d. komplette Uebersetzung in Englisch
    11.04.2003   f.j. Ergaenzung fuer Mitsubishi NC30 Compiler
    17.06.2003   -rs  Definition von Basistypen in <#ifndef _WINDEF_> gesetzt
    16.04.2004   r.d. Ergaenzung fuer Borland C++ Builder
    30.08.2004   -rs  TRACE5 eingef黦t
    23.12.2005   d.k. Definitions for IAR compiler

    $Id: global.h,v 1.1.1.1 2007/03/12 12:59:09 A.Suess Exp $

****************************************************************************/

#ifndef _GLOBAL_H_
#define _GLOBAL_H_

//---------------------------------------------------------------------------
//  elements of defines for development system
//---------------------------------------------------------------------------

// these defines are necessary to check some of characteristics of the development system
#define _DEV_BIGEND_            0x80000000L     // big endian (motorolla format)
#define _DEV_ALIGNMENT_4_       0x00400000L     //                  the CPU needs alignment of 4 bytes
#define _DEV_ONLY_INT_MAIN_     0x00004000L     //                  the compiler needs "int main(int)" instead of "void main(void)"
#define _DEV_COMMA_EXT_         0x00002000L     //                  support of last comma in struct predefinition
#define _DEV_64BIT_SUPPORT_     0x00001000L     //                  support of 64 bit operations
#define _DEV_BIT64_             0x00000400L     // count of bits:   64 bit
#define _DEV_BIT32_             0x00000300L     //                  32 bit
#define _DEV_BIT16_             0x00000200L     //                  16 bit
#define _DEV_BIT8_              0x00000100L     //                  8 bit
#define _DEV_MPLAB_C30_         0x00000019L     //                  MPLAB C30 for Microchip dsPIC33F series
#define _DEV_GNUC_TC_           0x00000018L     //                  GNU for Infineon TriCore
#define _DEV_GNUC_X86_          0x00000017L     //                  GNU for I386
#define _DEV_IAR_ARM_           0x00000016L     //                  ARM IAR C/C++ Compiler
#define _DEV_PARADGM_X86        0x00000015L     //                  Paradigm C/C++ for Beck 1x3
#define _DEV_GNUC_CF_           0x00000014L     //                  GNU for Coldfire
#define _DEV_KEIL_ARM_          0x00000013L     //                  Keil ARM
#define _DEV_MSEVC_             0x00000012L     //                  Microsoft embedded Visual C/C++
#define _DEV_HIGHTEC_GNUC_X86_  0x00000011L     //                  Hightec elf386 gcc
#define _DEV_MSVC_RTX_          0x00000010L     //                  VC600 + RTX
#define _DEV_MSVC_V1_5_         0x0000000FL     //                  Microsoft Visual C/C++ V1.5
#define _DEV_GNUC_ARM7_         0x0000000EL     //                  GNU Compiler gcc for ARM7
#define _DEV_METROWERKS_CW_     0x0000000DL     //                  Metrowerks Code Warrior
#define _DEV_MITSUBISHIM16C_    0x0000000CL     //compiler from:    Mitsubishi
#define _DEV_GNUC_C16X_         0x0000000BL     //                  GNU Compiler gcc166 for Infineon C16x
#define _DEV_LINUX_GCC_         0x0000000AL     //                  Linux GNU Compiler gcc
#define _DEV_GNUC_MPC5X5        0x00000009L     //                  GNU for Motorola PPC5x5
#define _DEV_TASKINGM16C_       0x00000008L     //                  Tasking for Mitsubishi M16C
#define _DEV_FUJITSU_           0x00000007L     //                  Fujitsu
#define _DEV_TASKING8_          0x00000006L     //                  Tasking 8051
#define _DEV_TASKING16_         0x00000005L     //                  Tasking 166
#define _DEV_KEIL8_             0x00000004L     //                  Keil C51
#define _DEV_KEIL16_            0x00000003L     //                  Keil C166
#define _DEV_BORLANDC_          0x00000002L     //                  Borland C/C++
#define _DEV_MSVC16_            0x00000001L     //                  Microsoft Visual C/C++
#define _DEV_MSVC32_            0x00000000L     //                  Microsoft Visual C/C++

// these defines can be used to mask previous elements
#define _DEV_MASK_COMPILER      0x000000FFL
#define _DEV_MASK_BITCOUNT      0x00000F00L
#define _DEV_MASK_ADDSUPPORT    0x0000F000L
#define _DEV_MASK_ALIGNMENT     0x00F00000L


//---------------------------------------------------------------------------
//  defines for development system (DEV_SYSTEM) including previous elements
//---------------------------------------------------------------------------

#define _DEV_WIN16_             (_DEV_BIT16_ | _DEV_MSVC16_                  )
#define _DEV_WIN32_             (_DEV_BIT32_ | _DEV_MSVC32_                   | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_MSVC_DOS_          (_DEV_BIT32_ | _DEV_MSVC_V1_5_               )
#define _DEV_BORLAND_DOS_       (_DEV_BIT32_ | _DEV_BORLANDC_                ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_KEIL_C51X_         (_DEV_BIT8_  | _DEV_KEIL8_     | _DEV_BIGEND_ | _DEV_COMMA_EXT_) // at least C51 version 7.05 supports comma extension
#define _DEV_KEIL_C16X_         (_DEV_BIT16_ | _DEV_KEIL16_                   | _DEV_COMMA_EXT_) // at least C166 version 5.03 supports comma extension
#define _DEV_TASKING_C51X_      (_DEV_BIT8_  | _DEV_TASKING8_  | _DEV_BIGEND_)
#define _DEV_TASKING_C16X_      (_DEV_BIT16_ | _DEV_TASKING16_               )
#define _DEV_FUJITSU_F590_      (_DEV_BIT8_  | _DEV_FUJITSU_                  | _DEV_COMMA_EXT_) // softune is not able to support 64 bit variables QWORD !!!
//f.j.29.04.03 M16C kann effektiv mit Bytes umgehen
//#define _DEV_TASKING_M16C_      (_DEV_BIT16_ | _DEV_TASKINGM16C_             )
#define _DEV_TASKING_M16C_      (_DEV_BIT8_  | _DEV_TASKINGM16C_             )
#define _DEV_MITSUBISHI_M16C_   (_DEV_BIT8_  | _DEV_MITSUBISHIM16C_          )
#define _DEV_GNU_MPC5X5_        (_DEV_BIT32_ | _DEV_GNUC_MPC5X5| _DEV_BIGEND_ | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_LINUX_             (_DEV_BIT32_ | _DEV_LINUX_GCC_                | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_C16X_          (_DEV_BIT16_ | _DEV_GNUC_C16X_               ) //| _DEV_COMMA_EXT_)
#define _DEV_MCW_MPC5X5_        (_DEV_BIT32_ | _DEV_METROWERKS_CW_           ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_ARM7_          (_DEV_BIT32_ | _DEV_GNUC_ARM7_               ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_WIN32_RTX_         (_DEV_BIT32_ | _DEV_MSVC_RTX_                ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_HIGHTEC_X86_       (_DEV_BIT32_ | _DEV_HIGHTEC_GNUC_X86_        ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_WIN_CE_            (_DEV_BIT32_ | _DEV_MSEVC_                   ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_KEIL_CARM_         (_DEV_BIT32_ | _DEV_KEIL_ARM_                 | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_IAR_CARM_          (_DEV_BIT32_ | _DEV_IAR_ARM_                  | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_MCW_MCF5XXX_       (_DEV_BIT32_ | _DEV_METROWERKS_CW_           ) //| _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_CF5282_        (_DEV_BIT32_ | _DEV_GNUC_CF_                 )
#define _DEV_PAR_BECK1X3_       (_DEV_BIT16_ | _DEV_PARADGM_X86)
#define _DEV_GNU_CF548X_        (_DEV_BIT32_ | _DEV_GNUC_CF_                  | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)
#define _DEV_GNU_I386_          (_DEV_BIT32_ | _DEV_GNUC_X86_                 | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_)
#define _DEV_GNU_TRICORE_       (_DEV_BIT32_ | _DEV_GNUC_TC_                  | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_ | _DEV_ONLY_INT_MAIN_ | _DEV_ALIGNMENT_4_)
#define _DEV_MPLAB_DSPIC33F_    (_DEV_BIT16_ | _DEV_MPLAB_C30_               ) //| _DEV_COMMA_EXT_)
#define _DEV_ECOS_              (_DEV_BIT32_ | _DEV_GNUC_CF_                  | _DEV_64BIT_SUPPORT_ | _DEV_COMMA_EXT_)


//---------------------------------------------------------------------------
//  usefull macros
//---------------------------------------------------------------------------

#define CHECK_IF_ONLY_INT_MAIN()    (DEV_SYSTEM & _DEV_ONLY_INT_MAIN_)
#define CHECK_MEMORY_ALINMENT()     (DEV_SYSTEM & _DEV_MASK_ALIGNMENT)


//---------------------------------------------------------------------------
//  defines for target system (TARGET_SYSTEM)
//---------------------------------------------------------------------------

#define _DOS_              (16 + 0x10000)
#define _WIN16_             16
#define _WIN32_             32
#define _WINCE_            (32 + 0x20000)
#define _NO_OS_              0
#define _LINUX_              1
#define _PXROS_              2
#define _ECOSPRO_            3
#define _ECOS_               4

//---------------------------------------------------------------------------
//  definitions for Keil C51
//---------------------------------------------------------------------------

#ifdef  __C51__

    #define TARGET_SYSTEM   _NO_OS_
    #define DEV_SYSTEM      _DEV_KEIL_C51X_

    #pragma DEBUG OBJECTEXTEND
    #pragma WARNINGLEVEL(2)             // maximum warning level

    #define NEAR            idata       // variables mapped to internal data storage location
    #define FAR             xdata       // variables mapped to external data storage location
    #define CONST           const       // variables mapped to ROM (i.e. flash)
    #define ROM             code        // code or variables mapped to ROM (i.e. flash)
                                        // usage: CONST BYTE ROM foo = 0x00;
    #define HWACC           xdata       // hardware access through external memory (i.e. CAN)
    #define LARGE           large       // functions set parameters to external data storage location

    // These types can be adjusted by users to match application requirements. The goal is to
    // minimize code memory and maximize speed.
    #define GENERIC                     // generic pointer to point to application data
                                        // Variables with this attribute can be located in external
                                        // or internal data memory.
    #define MEM             xdata       // Memory attribute to optimize speed and code of pointer access.

    #define REENTRANT       reentrant
    #define PUBLIC

    #ifndef NDEBUG
        #include <stdio.h>              // prototype printf() (for TRACE)
        #define TRACE  printf
    #endif


//---------------------------------------------------------------------------
//  definitions for GNU Compiler for Infineon C16x
//  - it have to be befor Keil (it has __C166__ too)
//---------------------------------------------------------------------------
#elif  defined (__GNUC__) && defined (__C166__)

    #define TARGET_SYSTEM   _NO_OS_
    #define DEV_SYSTEM      _DEV_GNU_C16X_

//    #define NEAR            idata       // variables mapped to internal data storage location
    #define NEAR            near       // variables mapped to internal data storage location
//    #define FAR             xhuge       // variables mapped to external data storage location
    #define FAR             huge       // variables mapped to external data storage location
    #define CONST           const       // variables mapped to ROM (i.e. flash)
    #define ROM                         // code or variables mapped to ROM (i.e. flash)
                                        // usage: CONST BYTE ROM foo = 0x00;
//    #define HWACC           sdata       // hardware access through external memory (i.e. CAN)
    #define HWACC           huge       // hardware access through external memory (i.e. CAN)
    #define LARGE                       // functions set parameters to external data storage location

    // These types can be adjusted by users to match application requirements. The goal is to
    // minimize code memory and maximize speed.
//    #define GENERIC         xhuge       // generic pointer to point to application data
    #define GENERIC         huge       // generic pointer to point to application data
                                        // Variables with this attribute can be located in external
                                        // or internal data memory.
    #define MEM                         // Memory attribute to optimize speed and code of pointer access.

    #define REENTRANT
    #define PUBLIC

    #ifndef NDEBUG
        #include <stdio.h>              // prototype printf() (for TRACE)
        #define TRACE  printf

        #define ASSERT(p)  \
            if (p)         \
            {              \
                ;          \
            }              \
            else           \
            {              \
                PRINTF0("Assert failed: " #p " (file %s line %d)\n", __FILE__, (int) __LINE__ ); \
                while (1); \
            }
    #else
        #define ASSERT(p)
    #endif

//---------------------------------------------------------------------------
//  definitions for Keil C166
//---------------------------------------------------------------------------
#elif  defined (__C166__)               // 24.01.2005 r.d.: Keil ARM7 needs directive 'defined'

    #define TARGET_SYSTEM   _NO_OS_
    #define DEV_SYSTEM      _DEV_KEIL_C16X_

    #pragma CODE
    #pragma MOD167
    #pragma NOINIT
    #pragma DEBUG
    #pragma WARNINGLEVEL(3)             // maximum warning level
    #pragma WARNING DISABLE = 47        // warning <unreferenced parameter> = OFF
    #pragma WARNING DISABLE = 38        // warning <empty translation unit> = OFF
//  #pragma WARNING DISABLE = 102       // warning <different const/volatile qualifiers> = OFF
    #pragma WARNING DISABLE = 174       // warning <unreferenced 'static' function> = OFF
    #pragma WARNING DISABLE = 183       // warning <dead assignement eliminated> = OFF

    #define NEAR            idata       // variables mapped to internal data storage location
    #define FAR             xhuge       // variables mapped to external data storage location
    #define CONST           const       // variables mapped to ROM (i.e. flash)
    #define ROM                         // code or variables mapped to ROM (i.e. flash)
                                        // usage: CONST BYTE ROM foo = 0x00;
//    #define HWACC           sdata       // hardware access through external memory (i.e. CAN)
    #define HWACC           huge       // hardware access through external memory (i.e. CAN)
    #define LARGE                       // functions set parameters to external data storage location

    // These types can be adjusted by users to match application requirements. The goal is to
    // minimize code memory and maximize speed.
    #define GENERIC         xhuge       // generic pointer to point to application data
                                        // Variables with this attribute can be located in external
                                        // or internal data memory.
    #define MEM                         // Memory attribute to optimize speed and code of pointer access.

    #define REENTRANT
    #define PUBLIC

    #ifndef NDEBUG
        #include <stdio.h>              // prototype printf() (for TRACE)
        #define TRACE  printf
    #endif

//---------------------------------------------------------------------------
//  definitions for MPLAB C30 for dsPIC33F series
//---------------------------------------------------------------------------
#elif  defined (__C30__)

    #define TARGET_SYSTEM   _NO_OS_
    #define DEV_SYSTEM      _DEV_MPLAB_DSPIC33F_

    #define NEAR                        // variables mapped to internal data storage location
    #define FAR                         // variables mapped to external data storage location
    #define CONST        const          // variables mapped to ROM (i.e. flash)
    #define ROM                         // code or variables mapped to ROM (i.e. flash)
                                        // usage: CONST BYTE ROM foo = 0x00;
    #define HWACC                       // hardware access through external memory (i.e. CAN)
    #define LARGE                       // functions set parameters to external data storage location

    // These types can be adjusted by users to match application requirements. The goal is to
    // minimize code memory and maximize speed.
    #define GENERIC                     // generic pointer to point to application data
                                        // Variables with this attribute can be located in external
                                        // or internal data memory.
    #define MEM                         // Memory attribute to optimize speed and code of pointer access.

    #define REENTRANT
    #define PUBLIC

//    #ifndef QWORD
//        #define QWORD long long

⌨️ 快捷键说明

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