www.pudn.com > FULL_TI-MSP430-FOR-uCOS-II-V252.rar > OS_CPU.H
/* ********************************************************************************************************* * uC/OS-II * The Real-Time Kernel * * (c) Copyright 2002, Micrium, Inc., Weston, FL * All Rights Reserved * * TI MSP430 * * * File : OS_CPU.H * By : Alley Zhou(zzy@lierda.com) * Jean J. Labrosse ********************************************************************************************************* */ #ifdef OS_CPU_GLOBALS #define OS_CPU_EXT #else #define OS_CPU_EXT extern #endif /* ********************************************************************************************************* * 数据类型 * ********************************************************************************************************* */ typedef unsigned char BOOLEAN; typedef unsigned char INT8U; /* 无符号 8 bit */ typedef signed char INT8S; /* 有符号 8 bit */ typedef unsigned int INT16U; /* 无符号 16 bit */ typedef signed int INT16S; /* 有符号 16 bit */ typedef unsigned long INT32U; /* 无符号 32 bit */ typedef signed long INT32S; /* 有符号 32 bit */ typedef float FP32; /* 单精度浮点数 */ typedef double FP64; /* 双精度浮点数 */ typedef unsigned int OS_STK; /* 堆栈宽度16位 */ typedef unsigned int OS_CPU_SR; /* 状态寄存器宽度16位 */ /* ********************************************************************************************************* * TI MSP430 * * 方法 #1: 用简单指令开关中断。 * 注意,用方法1关闭中断,从调用函数返回后中断会重新打开! * * * 方法 #2: 中断的势能与否与先前的中断状态有关,比如,在进入临界段前中断势能关闭的话, * 退出临界段时中断势能仍然关闭。 * * 方法 #3 中断势能与否与先前的中断状态有关。先将状态寄存器SR存储到局部变量CPU_SR中, * 然后关闭中断,UCOS-II在需要关闭中断的地方都分配一个局部变量CPU_SR, * 最后通过将CPU_SR的值复制到状态寄存器来恢复中断势能状态。 ********************************************************************************************************* */ #define OS_CRITICAL_METHOD 3 #if OS_CRITICAL_METHOD == 1 #define OS_ENTER_CRITICAL() _DINT() /* 关中断 */ #define OS_EXIT_CRITICAL() _EINT() /* 开中断 */ #endif #if OS_CRITICAL_METHOD == 2 #define OS_ENTER_CRITICAL() /* 关中断 */ #define OS_EXIT_CRITICAL() /* 开中断 */ #endif #if OS_CRITICAL_METHOD == 3 #define OS_ENTER_CRITICAL() (cpu_sr = OSCPUSaveSR()) /* 关中断 */ #define OS_EXIT_CRITICAL() (OSCPURestoreSR(cpu_sr)) /* 开中断 */ #endif /* ********************************************************************************************************* * MSP430 ********************************************************************************************************* */ #define OS_STK_GROWTH 1 /* MSP430 的堆栈从高到底 */ #define OS_TASK_SW() OSCtxSw() /* 任务级任务切换函数 */ /* ********************************************************************************************************* * 全局变量 ********************************************************************************************************* */ OS_CPU_EXT OS_STK *OSISRStkPtr; /* 中断服务程序堆栈指针 */ /* ********************************************************************************************************* * 函数声明 ********************************************************************************************************* */ OS_CPU_SR OSCPUSaveSR(void); void OSCPURestoreSR(OS_CPU_SR cpu_sr);