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

📄 os_stack.c

📁 uCOS-II在TMS320F2812上的移植
💻 C
字号:
/*
    TI TMS320F2812用户堆栈处理
堆栈空间:0X0000~0X07FF
堆栈大小:2048 WORDS
堆栈分配:每个任务堆栈大小为256WORDS,0X0000~0X06FF为任务堆栈,0X0700~0X07FF为中断堆栈
    0X0000-0X00FF:任务堆栈号0
    0X0100-0X01FF:任务堆栈号1
    0X0200-0X02FF:任务堆栈号2
    0X0300-0X03FF:任务堆栈号3
    0X0400-0X04FF:任务堆栈号4
    0X0500-0X05FF:任务堆栈号5
    0X0600-0X06FF:任务堆栈号6
*/
#include "..\ucosii\ucos_ii.h"
INT8U OSStackState;
INT16U const OSStackPtrTbl[7] = 
{
	0x0000,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600
};
INT16U const OSStackSizeTbl[7] = 
{
	0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100
};

void OSStackInit(void)
{
	OSStackState = 0;
}

/*
  堆栈分配函数
  参数:
      StackNo---堆栈号
  返回:
      (1)0XFFFF---堆栈分配不成功
      (2)堆栈指针
*/
OS_STK *OSStackAlloc(INT8U StackNo)
{
	INT8U mk;
	if(StackNo>6)
	{
		return (OS_STK *)0xffff;
    }
   mk = 1<<StackNo;
   if(OSStackState & mk)
   {
		return (OS_STK *)0xffff;   	
   }
   OSStackState |= mk;
   return (OS_STK *)OSStackPtrTbl[StackNo];
}
/*
    得到堆栈大小函数
*/
INT16U OSStackSize(INT8U StackNo)
{
	if(StackNo<7)
	{
		return OSStackSizeTbl[StackNo];
   }
   return 0;
}
/*
  堆栈释放函数
*/
void OSStackFree(INT8U StackNo)
{
	if(StackNo<7)
	{
      OSStackState &= ~(1<<StackNo);
   }
}

⌨️ 快捷键说明

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