📄 os_cpu.h
字号:
/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
*
* (c) Copyright 1992-2000, Jean J. Labrosse, Weston, FL
* All Rights Reserved
*
* 208x Specific code
* (Banked)
*
* File : OS_CPU.H
* By : Jean J. Labrosse
* Revised By :
*********************************************************************************************************
*/
#ifndef _OS_CPU_H
#define _OS_CPU_H
#ifdef OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT extern
#endif
#ifdef __IAR_SYSTEMS_ICC
/*
*********************************************************************************************************
* DATA TYPES
* (Compiler Specific)
*********************************************************************************************************
*/
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
typedef signed char INT8S; /* Signed 8 bit quantity */
typedef unsigned int INT16U; /* Unsigned 16 bit quantity */
typedef signed int INT16S; /* Signed 16 bit quantity */
typedef unsigned long INT32U; /* Unsigned 32 bit quantity */
typedef signed 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 char OS_CPU_SR; /* hmwei:define OS_CPU_SR 8-bit wide*/
#define BYTE INT8S /* Define data types for backward compatibility ... */
#define UBYTE INT8U /* ... to uC/OS V1.xx. Not actually needed for ... */
#define WORD INT16S /* ... uC/OS-II. */
#define UWORD INT16U
#define LONG INT32S
#define ULONG INT32U
#define true 1
#define false 0
/*
*********************************************************************************************************
* Z-180 Specific code
* (Banked)
* CRITICAL SECTION CONTROL
*
* Method #1: Disable/Enable interrupts using simple instructions. After critical section, interrupts
* will be enabled even if they were disabled before entering the critical section.
*
* Method #2: Disable/Enable interrupts by preserving the state of interrupts. In other words, if
* interrupts were disabled before entering the critical section, they will be disabled when
* leaving the critical section.
*********************************************************************************************************
*/
extern INT8U OS_Enter_Sum;
#define OS_CRITICAL_METHOD 1
#if OS_CRITICAL_METHOD == 1
#define OS_ENTER_CRITICAL() do{ disable_interrupt(); OS_Enter_Sum++; }while(0) //把OS_Enter_Sum定义在0X0031
#define OS_EXIT_CRITICAL() do{ --OS_Enter_Sum;if (OS_Enter_Sum==0)enable_interrupt();}while(0)
//#define OS_ENTER_CRITICAL() disable_interrupt() /* Method #2 is not supported by the IAR compiler */
//#define OS_EXIT_CRITICAL() enable_interrupt()
#endif
#if OS_CRITICAL_METHOD == 2
#define OS_ENTER_CRITICAL() disable_interrupt() /* Method #2 is not supported by the IAR compiler */
#define OS_EXIT_CRITICAL() enable_interrupt()
#endif
#if OS_CRITICAL_METHOD == 3
#define OS_ENTER_CRITICAL() disable_interrupt()
#define OS_EXIT_CRITICAL() enable_interrupt()
#endif
/*
*********************************************************************************************************
* Z-180 Specific code
* (Banked)
* MISCELLANEOUS
*********************************************************************************************************
*/
/* Restart instructions */
//#define RST_00H 0xC7
//#define RST_08H 0xCF
//#define RST_10H 0xD7
//#define RST_18H 0xDF
//#define RST_20H 0x20
//#define RST_28H 0xEF
//#define RST_30H 0xF7
//#define RST_38H 0xFF
#define OS_STK_GROWTH 1 /* Stack grows from HIGH to LOW memory on 208X */
//#define OS_TASK_SW() _opc(0x20) /* Execute a RESTART instruction */
//#define OS_TASK_SW() OSCtxSw
#endif/*__IAR_SYSTEMS_ICC*/
#ifdef __IAR_SYSTEMS_ASM
extern OS_Enter_Sum
extern OSLockNesting
extern OSTaskSW_Sem
mEnterCritical macro
DI
push hl
ld hl,OS_Enter_Sum
inc (hl)
pop hl
endm
mExitCritical macro
local _interrupt_disabled
push hl
ld hl,OS_Enter_Sum
dec (hl)
pop hl
jr nz,_interrupt_disabled
ei
_interrupt_disabled:
endm
mTaskLock macro
push hl
ld hl,OSLockNesting
inc (hl)
pop hl
endm
mTaskUnlock macro
push hl
ld hl,OSLockNesting
dec (hl)
pop hl
endm
mSetTaskSWSem macro
push af
ld a, 0x01
ld (lwrd OSTaskSW_Sem), a
pop af
endm
#endif /* __IAR_SYSTEMS_ASM */
#endif /*_OS_CPU_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -