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

📄 os_cpu.h

📁 small rtos for avr small rtos 使用了动态堆栈 想无需任何改动就可以编译这个程序
💻 H
字号:
/*********************************************************************************************************
**				                               Small RTOS 
**                                   The Real-Time Kernel For AVR-GCC
**
**                                  (c) Copyright 2004-2005, xubaotian
**                                           All Rights Reserved
**
**                                                  V1.10
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: OS_CPU.h
**创   建   人: 徐宝田
**最后修改日期:  2005年6月9日
**描       述: Small RTOS 与CPU(既ATmega系列)相关的C语言头文件,定义一些与CPU相关的宏。
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 徐宝田
** 版  本: V0.50
** 日 期: 2005年5月22日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
typedef unsigned char  uint8;                                   /* 定义可移植的无符号8位整数关键字            */
typedef signed   char  int8;                                    /* 定义可移植的有符号8位整数关键字            */
typedef unsigned int   uint16;                                  /* 定义可移植的无符号16位整数关键字           */
typedef signed   int   int16;                                   /* 定义可移植的有符号16位整数关键字           */
typedef unsigned long  uint32;                                  /* 定义可移植的无符号32位整数关键字           */
typedef signed   long  int32;                                   /* 定义可移植的有符号32位整数关键字           */

#ifndef NULL
#define NULL 0
#endif

#if EN_OS_INT_ENTER >0 
#define  OS_INT_ENTER() OSIntNesting++,EA=1
#endif

#define  OS_ENTER_CRITICAL()  cli();Os_Enter_Sum++              /* 禁止中断                                     */
#define  OS_EXIT_CRITICAL()   if(--Os_Enter_Sum==0) sei()       /* 允许中断                                     */

#define  HIGH_BYTE  0                                           /* uint16的高位字节                              */
#define  LOW_BYTE   1                                           /* uint16的低位字节                              */

#define  OS_TASK_SW()    OSCtxSw()                      


/* 任务切换函数                                  */

#ifndef _OS_CPU_A_C

extern void OSCtxSw(void);
extern void OSIntCtxSw(void);

#endif


#define ExtraPush()			\
{							\
__asm__ __volatile__(		\
"PUSH R2"   "\n\t"			\
"PUSH R3"	"\n\t"			\
"PUSH R4"	"\n\t"			\
"PUSH R5"   "\n\t"			\
"PUSH R6"	"\n\t"			\
"PUSH R7"	"\n\t"			\
"PUSH R8"   "\n\t"			\
"PUSH R9"	"\n\t"			\
"PUSH R10"	"\n\t"			\
"PUSH R11"  "\n\t"			\
"PUSH R12"	"\n\t"			\
"PUSH R13"	"\n\t"			\
"PUSH R14"  "\n\t"			\
"PUSH R15"	"\n\t"			\
"PUSH R16"	"\n\t"			\
"PUSH R17"	"\n\t"			\
"PUSH R28"  "\n\t"			\
"PUSH R29"	"\n\t"			\
);							\
}


#define POPALL()			\
{							\
__asm__ __volatile__(		\
"POP R29"		"\n\t"		\
"POP R28"		"\n\t"		\
"POP R17"   	"\n\t"		\
"POP R16"   	"\n\t"		\
"POP R15"   	"\n\t"		\
"POP R14"   	"\n\t"		\
"POP R13"   	"\n\t"		\
"POP R12"   	"\n\t"		\
"POP R11"   	"\n\t"		\
"POP R10"   	"\n\t"		\
"POP R9"    	"\n\t"		\
"POP R8"    	"\n\t"		\
"POP R7"    	"\n\t"		\
"POP R6"    	"\n\t"		\
"POP R5"    	"\n\t"		\
"POP R4"    	"\n\t"		\
"POP R3"    	"\n\t"		\
"POP R2"    	"\n\t"		\
"POP R31"  		"\n\t"  	\
"POP R30"  		"\n\t"  	\
"POP R27"  		"\n\t"  	\
"POP R26"  		"\n\t"  	\
"POP R25"  		"\n\t"  	\
"POP R24"  		"\n\t"  	\
"POP R23"  		"\n\t"  	\
"POP R22"  		"\n\t"  	\
"POP R21"  		"\n\t"  	\
"POP R20"  		"\n\t"  	\
"POP R19"  		"\n\t"  	\
"POP R18"  		"\n\t"  	\
"POP R0"   		"\n\t"  	\
"OUT 0x3F,R0"  	"\n\t"  	\
"POP R0"   		"\n\t"  	\
"POP R1"   		"\n\t"  	\
);							\
}

#define PUSHALL()           \
{							\
__asm__ __volatile__(		\
"PUSH R1"  		 "\n\t" 	\
"PUSH R0"  		 "\n\t"  	\
"IN R0,0x3F"  	 "\n\t"  	\
"PUSH R0"  		 "\n\t"  	\
"PUSH R18"  	 "\n\t"  	\
"PUSH R19"  	 "\n\t"  	\
"PUSH R20"  	 "\n\t"  	\
"PUSH R21"  	 "\n\t"  	\
"PUSH R22"  	 "\n\t"  	\
"PUSH R23"  	 "\n\t"  	\
"PUSH R24"  	 "\n\t"  	\
"PUSH R25"  	 "\n\t"  	\
"PUSH R26"  	 "\n\t"  	\
"PUSH R27"   	 "\n\t"  	\
"PUSH R30"		 "\n\t"		\
"PUSH R31"		 "\n\t"		\
"PUSH R2"   	 "\n\t"		\
"PUSH R3"		 "\n\t"		\
"PUSH R4"		 "\n\t"		\
"PUSH R5"   	 "\n\t"		\
"PUSH R6"		 "\n\t"		\
"PUSH R7"		 "\n\t"		\
"PUSH R8"   	 "\n\t"		\
"PUSH R9"		 "\n\t"		\
"PUSH R10"		 "\n\t"		\
"PUSH R11"  	 "\n\t"		\
"PUSH R12"		 "\n\t"		\
"PUSH R13"		 "\n\t"		\
"PUSH R14"  	 "\n\t"		\
"PUSH R15"		 "\n\t"		\
"PUSH R16"		 "\n\t"		\
"PUSH R17"		 "\n\t"		\
"PUSH R28"	 	 "\n\t"		\
"PUSH R29"		 "\n\t"		\
);							\
}


#define _nop_()				\
{							\
__asm__ __volatile__(		\
"NOP"			 "\n\t"		\
"NOP"			 "\n\t"		\
"NOP"			 "\n\t"		\
"NOP"			 "\n\t"		\
);							\
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -