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

📄 os_cpu.h

📁 Actions ucOS-II mp3方案源码,可以做参考
💻 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 + -