📄 os_stack.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 + -