📄 os_core.c
字号:
/*
*********************************************************************************************************
* uC/OS-16
* The Real-Time Kernel
* CORE FUNCTIONS
*
* File : OS_CORE.C
* By : zhang xian
* Date : 2006-11-26
*********************************************************************************************************
*/
#include "Includes.h"
INT8U code OSMapTbl[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
/*
*********************************************************************************************************
* SCHEDULER
*********************************************************************************************************
*/
void OS_Sched (void)
{
OSNextTaskID = FindBitNum( OSTaskReady );
if( OSNextTaskID!=OSTaskID )
{
OSCtxSw();
}
}
/*********************************************************************************************************/
/* 在中断里调用 */
/*********************************************************************************************************/
void OSTimeTick (void)
{
register INT8U k;
OSSysCnt++;
for(k=0; k<OS_MAX_TASKS; k++)
{
if( OSDlyTicks[k] )
{
OSDlyTicks[k]--;
if( OSDlyTicks[k]==0 )
{
OSTaskReady |= OSMapTbl[k];
}
}
}
}
/*********************************************************************************************************/
#if EN_OS_TASK_STACK_CHK > 0
void OSTaskStkChk( void ) reentrant
{
INT8U Free;
OS_STK *pChk;
OS_ENTER_CRITICAL();
pChk = (OS_STK *)OSStackBottom[OSTaskID];
Free = 0;
while (*pChk-- == (OS_STK)0)
{
Free++;
}
OSStackFreeBytes[OSTaskID] = Free;
// 下面检查中断堆栈
pChk = (OS_STK *)&OSISRStack[OS_ISR_STACK_SIZE-1];
Free = 0;
while (*pChk-- == (OS_STK)0)
{
Free++;
}
OSStackFreeBytes[OS_MAX_TASKS] = Free;
OS_EXIT_CRITICAL();
}
#else
#define OSTaskStkChk()
#endif
/*********************************************************************************************************/
code INT8U StackSize[8] = {StackSize0,StackSize1,StackSize2,StackSize3,StackSize4,StackSize5,StackSize6,StackSize7};
/*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -