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

📄 ucos_zsp.h

📁 ucosii for zsp400
💻 H
字号:
/*********************************************** MODULE HEADER *********
*
*  PROCESS NAME:  KERNEL
*
*
*  FILENAME:
*
*     UCOS_ZSP.H
*
*  DESCRIPTION
*  -----------
*
*     Contains public declarations for uC/OS-II constants, macros,
*  structs (etc...) on the LSI Logic ZSP
*
*
*  REVISION HISTORY
*  ----------------
*
*  DATE        NAME        REASON/CHANGE ID
*  ----        ----        ----------------
*  10/02/00    S.Wright    ORG
*
*
*
*                                   Copyright LSI Logic, 2001
*
***********************************************************************/

/*********************************************** DEFINES **************/

#ifndef NULL
#define NULL 0
#endif

#define OS_TASK_SW()          asm ("bits %ireq, 15")  /* set the NMI bit */
#define OS_ENTER_CRITICAL()   asm ("bitc %imask, 15") /* clear the GIE bit */
#define OS_EXIT_CRITICAL()    asm ("bits %imask, 15") /* set the GIE bit */

/*
Interrupts to enable -- constants for %IMASK
*/

#define ZSP_INT_GIE 0x8000
#define ZSP_INT_PIE 0x4000
#define ZSP_INT_MHR 0x2000
#define ZSP_INT_MHT 0x1000
#define ZSP_INT_M1R 0x0800
#define ZSP_INT_M1T 0x0400
#define ZSP_INT_M0R 0x0200
#define ZSP_INT_M0T 0x0100
#define ZSP_INT_DMA 0x0080
#define ZSP_INT_MT1 0x0040
#define ZSP_INT_MT0 0x0020
#define ZSP_INT_ME4 0x0010
#define ZSP_INT_ME3 0x0008
#define ZSP_INT_ME2 0x0004
#define ZSP_INT_ME1 0x0002
#define ZSP_INT_ME0 0x0001

#define ZSP_IMASK ZSP_INT_PIE

#define IMASK_SAVE_MASK (ZSP_INT_GIE | ZSP_INT_PIE)

/*
Interrupt priorities -- constants for %IP0 ONLY!!
*/

#define EPL_HI 0xC000
#define EPL_LO 0x0000

#define PEPL_HI 0x3000
#define PEPL_LO 0x0000

#define ZSP_IP0 (EPL_HI | PEPL_LO)

#define IP0_SAVE_MASK (EPL_HI | PEPL_HI)


#define ZSP_SMODE 0x0080         /* enables int-vect-table re-map */

/*
                    TimerX Value
interrupt period = --------------
                      CPU MHz
                      -------
                        N+1


                         366
                 = --------------
                     150,000,000
                     -----------
                        63+1


                         366
                 = --------------
                     150,000,000
                     -----------
                         64

                        366
                 = --------------
                     2,343,750

                 = 156 us
*/

#define CPU_SPEED_MHZ         150
#define TIMER_DIV_CONST       63    /* N = 63 */
#define ROLLOVER_COUNT_VAL    366   /* TIMER1 value */
#define MICROSECONDS_PER_TICK 156   /* uS */


#ifndef  FALSE
#define  FALSE    0
#endif

#ifndef  TRUE
#define  TRUE     1
#endif


#define OS_FAR    /* unused on ZSP -- Intel X86 only */
#define far


/*********************************************** MACROS ***************/

typedef unsigned char  BOOLEAN;
typedef unsigned char  INT8U;    /* Unsigned  8 bit quantity */
typedef          char  INT8S;    /* Signed    8 bit quantity */
typedef unsigned int   INT16U;   /* Unsigned 16 bit quantity */
typedef          int   INT16S;   /* Signed   16 bit quantity */
typedef unsigned long  INT32U;   /* Unsigned 32 bit quantity */
typedef          long  INT32S;   /* Signed   32 bit quantity */

typedef float          FP32;     /* Single precision floating point */
typedef double         FP64;     /* Double precision floating point */

typedef unsigned int   OS_STK;      /* Each stack entry is 16-bit wide */
typedef unsigned short OS_CPU_SR;   /* Define size of CPU status register (PSW = 16 bits) */


/*********************************************** STRUCTURES ***********/




/*********************************************** DATA *****************/




/*********************************************** FUNCTIONS ************/

/*
in UC_ZSP_C.C
*/

extern INT8U OSPrioQuery (void);

/*
   NB:   Queue is actually a pointer to an OS_EVENT (queue) object.
         The pointer is cast to "void" to prevent errors since OS_EVENT
         is not defined yet...
*/

extern INT8U OSQNMsgs (void *Queue);
extern INT8S OSTCBIndex (INT8U Priority);

extern void OSInitTimer (void);
extern INT32U usToTicks (INT32U MicroSeconds);


#ifdef PROFILER_SUPPORT

/*
in PROFILER.C
*/

extern void OSProfileTask (void *Data);
extern void OSInitProfiler (void);

/*
   NB:   InputQueue is actually a pointer to an OS_EVENT (queue) object.
         The pointer is cast to "void" to prevent errors since OS_EVENT
         is not defined yet...
*/

extern INT8U OSProfilerRegisterTask (INT8U Priority, OS_STK *BottomOfStack, INT16U StackSize,
   INT8S *TaskName, void *InputQueue);
extern INT8U OSSendASCII_ViaProfiler (INT8S *StringToSend);

#endif

⌨️ 快捷键说明

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