OS_CPU.H文件

OS_CPU.H 文件中包含與處理器相關的常量,宏和結構體的定義。程序清單L9.2是爲80x86編寫的OS_CPU.H文件的內容。

程序清單L 9.2	OS_CPU.H.
#ifdef  OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT  extern
#endif
/*
*******************************************************************************
*                                 數據類型
*                            (與編譯器相關的內容)
*******************************************************************************
*/

typedef unsigned char BOOLEAN;
typedef unsigned char INT8U;            /* 無符號8位數	(1)*/
typedef signed   char INT8S;            /* 帶符號8位數	*/
typedef unsigned int  INT16U;           /* 無符號16位數	*/
typedef signed   int  INT16S;           /* 帶符號16位數	*/
typedef unsigned long INT32U;           /* 無符號32位數	*/
typedef signed   long INT32S;           /* 帶符號32位數	*/
typedef float         FP32;      /* 單精度浮點數	      */
typedef double        FP64;      /* 雙精度浮點數	*/

typedef unsigned int  OS_STK;   /* 堆棧入口寬度爲16位	*/

#define BYTE   INT8S     /* 以下定義的數據類型是爲了與uC/OS V1.xx 兼容	*/
#define UBYTE  INT8U     /*在uC/OS-II中並沒有實際的用處	  */
#define WORD   INT16S    
#define UWORD  INT16U
#define LONG   INT32S
#define ULONG  INT32U
/*
*******************************************************************************
*                 Intel 80x86 (實模式, 大模式編譯)
*
*方法 #1:   用簡單指令開關中斷。
*            注意,用方法1關閉中斷,從調用函數返回後中斷會重新打開!
*            注意將文件OS_CPU_A.ASM中與OSIntCtxSw()相關的常量從10改到8。

*

* 方法 #2:  關中斷前保存中斷被關閉的狀態.
*           注意將文件OS_CPU_A.ASM中與OSIntCtxSw()相關的常量從8改到10。
*  
* 
*
*******************************************************************************
*/
#define  OS_CRITICAL_METHOD    2

#if      OS_CRITICAL_METHOD == 1
#define  OS_ENTER_CRITICAL()  asm  CLI          /* 關閉中斷*/
#define  OS_EXIT_CRITICAL()   asm  STI          /* 打開中斷*/
#endif

#if      OS_CRITICAL_METHOD == 2
#define  OS_ENTER_CRITICAL()  asm {PUSHF; CLI}  /* 關閉中斷	*/
#define  OS_EXIT_CRITICAL()   asm  POPF         /* 打開中斷	*/
#endif

/*
*******************************************************************************
*              Intel 80x86 (實模式, 大模式編譯)
*******************************************************************************
*/

#define  OS_STK_GROWTH   1 /* 堆棧由高地址向低地址增長 	(3)*/

#define  uCOS         0x80 /* 中斷向量0x80用於任務切換	(4)*/

#define  OS_TASK_SW() asm  INT   uCOS                                      (5)

/*
*******************************************************************************
*                               全局變量
*******************************************************************************
*/

OS_CPU_EXT  INT8U  OSTickDOSCtr;   /* 爲調用DOS時鐘中斷而定義的計數器*/
                                   	(6)*/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章