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