OS_CPU.H
上传用户:zfj3589
上传日期:2022-07-13
资源大小:635k
文件大小:6k
源码类别:

微处理器开发

开发平台:

C/C++

  1. /****************************************Copyright (c)**************************************************
  2. **                               广州周立功单片机发展有限公司
  3. **                                     研    究    所
  4. **                                        产品一部 
  5. **
  6. **                                 http://www.zlgmcu.com
  7. **
  8. **--------------文件信息--------------------------------------------------------------------------------
  9. **文   件   名: os_cpu.h
  10. **创   建   人: 陈明计
  11. **最后修改日期: 2003年6月24日
  12. **描        述: μCOS-II在LPC210x上的移植代码CPU配置部分,用ADS1.2编译
  13. **
  14. **--------------历史版本信息----------------------------------------------------------------------------
  15. ** 创建人: 陈明计
  16. ** 版  本: 1.0
  17. ** 日 期: 2003年6月5日
  18. ** 描 述: 原始版本
  19. **
  20. **------------------------------------------------------------------------------------------------------
  21. ** 修改人: 陈明计
  22. ** 版  本: 1.1
  23. ** 日 期: 2003年6月13日
  24. ** 描 述: 增加函数IsrEnIRQ
  25. **
  26. **------------------------------------------------------------------------------------------------------
  27. ** 修改人: 陈明计
  28. ** 版  本: 1.2
  29. ** 日 期: 2003年6月19日
  30. ** 描 述: !、增加软件中断服务功能
  31. **         2、因取消变量OSNeedToSwapContext而做的改动
  32. **
  33. **------------------------------------------------------------------------------------------------------
  34. ** 修改人: 陈明计
  35. ** 版  本: 1.3
  36. ** 日 期: 2003年7月8日
  37. ** 描 述: 去除不必要的函数IsrEnIRQ
  38. **
  39. **--------------当前版本修订------------------------------------------------------------------------------
  40. ** 修改人: 
  41. ** 日 期: 
  42. ** 描 述: 
  43. **
  44. **------------------------------------------------------------------------------------------------------
  45. ********************************************************************************************************/
  46. #ifdef  OS_CPU_GLOBALS
  47. #define OS_CPU_EXT
  48. #else
  49. #define OS_CPU_EXT  extern
  50. #endif
  51. /**********************************************************************************************************
  52. *                    定义与编译器无关的数据类型
  53. **********************************************************************************************************/
  54. typedef unsigned char  BOOLEAN;                 /* 布尔变量                                 */
  55. typedef unsigned char  INT8U;                   /* 无符号8位整型变量                        */
  56. typedef signed   char  INT8S;                   /* 有符号8位整型变量                        */
  57. typedef unsigned short INT16U;                  /* 无符号16位整型变量                       */
  58. typedef signed   short INT16S;                  /* 有符号16位整型变量                       */
  59. typedef unsigned int   INT32U;                  /* 无符号32位整型变量                       */
  60. typedef signed   int   INT32S;                  /* 有符号32位整型变量                       */
  61. typedef float          FP32;                    /* 单精度浮点数(32位长度)                 */
  62. typedef double         FP64;                    /* 双精度浮点数(64位长度)                 */
  63. typedef INT32U         OS_STK;                  /* 堆栈是32位宽度                           */
  64. /* 以下是兼容UC/OS V1.XX的数据类型,在uC/OS-II没有使用  */
  65. #define BYTE           INT8S
  66. #define UBYTE          INT8U
  67. #define WORD           INT16S
  68. #define UWORD          INT16U
  69. #define LONG           INT32S
  70. #define ULONG          INT32U
  71. /* *********************************************************************************************************
  72. *                    与ARM7体系结构相关的一些定义
  73. **********************************************************************************************************/
  74. #define     OS_CRITICAL_METHOD     2            /* 选择开、关中断的方式 */
  75. __swi(0x00) void OS_TASK_SW(void);              /*  任务级任务切换函数          */
  76. __swi(0x01) void _OSStartHighRdy(void);         /*  运行优先级最高的任务        */
  77. __swi(0x02) void OS_ENTER_CRITICAL(void);       /*  关中断                      */
  78. __swi(0x03) void OS_EXIT_CRITICAL(void);        /*  开中断                      */
  79. __swi(0x40) void *GetOSFunctionAddr(int Index); /*  获取系统服务函数入口        */
  80. __swi(0x41) void *GetUsrFunctionAddr(int Index);/*  获取自定义服务函数入口      */
  81. __swi(0x42) void OSISRBegin(void);              /*  中断开始处理                */
  82. __swi(0x43) int  OSISRNeedSwap(void);           /*  判断中断是否需要切换        */
  83. __swi(0x80) void ChangeToSYSMode(void);         /*  任务切换到系统模式          */
  84. __swi(0x81) void ChangeToUSRMode(void);         /*  任务切换到用户模式          */
  85. __swi(0x82) void TaskIsARM(INT8U prio);         /*  任务代码是ARM代码           */
  86. __swi(0x83) void TaskIsTHUMB(INT8U prio);       /*  任务代码是THUMB             */
  87. #define OS_STK_GROWTH    1                      /*  堆栈是从上往下长的          */
  88. #define     USR32Mode       0x10                /*  用户模式                    */
  89. #define     SYS32Mode       0x1f                /*  系统模式                    */
  90. #define     NoInt           0x80
  91. #ifndef USER_USING_MODE
  92. #define USER_USING_MODE USR32Mode               /*  任务缺省模式                 */
  93. #endif
  94. #ifndef OS_SELF_EN
  95. #define OS_SELF_EN     0                        /*  允许返回OS与任务分别编译、固化*/    
  96. #endif
  97. OS_CPU_EXT INT32U OsEnterSum;                   /*  关中断计数器(开关中断的信号量)    */
  98. /*********************************************************************************************************
  99. **                            End Of File
  100. ********************************************************************************************************/