/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
* CORE FUNCTIONS
*
* (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
* All Rights Reserved
*
* File : OS_CORE.C
* By : Jean J. Labrosse
*********************************************************************************************************
*/
#ifndef OS_MASTER_FILE
#define OS_GLOBALS
#include "includes.h"
#endif
/*
*********************************************************************************************************
* MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
*
* Note: Index into table is desired bit position, 0..7
* Indexed value corresponds to bit mask
*********************************************************************************************************
*/
INT8U const OSMapTbl[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
/*
*********************************************************************************************************
* PRIORITY RESOLUTION TABLE
*
* Note: Index into table is bit pattern to resolve highest priority
* Indexed value corresponds to highest priority bit position (i.e. 0..7)
*********************************************************************************************************
*/
INT8U const OSUnMapTbl[] = {
0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x00 to 0x0F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x10 to 0x1F */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x20 to 0x2F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x30 to 0x3F */
6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x40 to 0x4F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x50 to 0x5F */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x60 to 0x6F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x70 to 0x7F */
7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x80 to 0x8F */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x90 to 0x9F */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xA0 to 0xAF */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xB0 to 0xBF */
6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xC0 to 0xCF */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xD0 to 0xDF */
5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xE0 to 0xEF */
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 /* 0xF0 to 0xFF */
};
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
static void OS_InitEventList(void);
static void OS_InitMisc(void);
static void OS_InitRdyList(void);
static void OS_InitTaskIdle(void);
static void OS_InitTaskStat(void);
static void OS_InitTCBList(void);
/*$PAGE*/
/*
*********************************************************************************************************
* INITIALIZATION
*
* Description: This function is used to initialize the internals of uC/OS-II and MUST be called prior to
* creating any uC/OS-II object and, prior to calling OSStart().
*
* Arguments : none
*
* Returns : none
*********************************************************************************************************
*/
void OSInit (void)
{
#if OS_VERSION >= 204
OSInitHookBegin(); /* Call port specific initialization code */
#endif
OS_InitMisc(); /* Initialize miscellaneous variables */
OS_InitRdyList(); /* Initialize the Ready List */
OS_InitTCBList(); /* Initialize the free list of OS_TCBs */
OS_InitEventList(); /* Initialize the free list of OS_EVENTs */
#if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
OS_FlagInit(); /* Initialize the event flag structures */
#endif
#if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
OS_MemInit(); /* Initialize the memory manager */
#endif
#if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
OS_QInit(); /* Initialize the message queue structures */
#endif
OS_InitTaskIdle(); /* Create the Idle Task */
#if OS_TASK_STAT_EN > 0
OS_InitTaskStat(); /* Create the Statistic Task */
#endif
#if OS_VERSION >= 204
OSInitHookEnd(); /* Call port specific init. code */
#endif
}
/*$PAGE*/
/*
*********************************************************************************************************
* ENTER ISR
*
* Description: This function is used to notify uC/OS-II that you are about to service an interrupt
* service routine (ISR). This allows uC/OS-II to keep track of interrupt nesting and thus
* only perform rescheduling at the last nested ISR.
*
* Arguments : none
*
* Returns : none
*
* Notes : 1) This function should be called ith interrupts already disabled
* 2) Your ISR can directly increment OSIntNesting without calling this function because
* OSIntNesting has been declared 'global'.
* 3) You MUST still call OSIntExit() even though you increment OSIntNesting directly.
* 4) You MUST invoke OSIntEnter() and OSIntExit() in pair. In other words, for every call
* to OSIntEnter() at the beginning of the ISR you MUST have a call to OSIntExit() at the
* end of the ISR.
* 5) You are allowed to nest interrupts up to 255 levels deep.
* 6) I removed the OS_ENTER_CRITICAL() and OS_EXIT_CRITICAL() around the increment because
* OSIntEnter() is always called with interrupts disabled.
*********************************************************************************************************
*/
void OSIntEnter (void)
{
if (OSRunning == TRUE) {
if (OSIntNesting < 255) {
OSIntNesting++; /* Increment ISR nesting level */
}
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* EXIT ISR
*
* Description: This function is used to notify uC/OS-II that you have completed serviving an ISR. When
* the last nested ISR has completed, uC/OS-II will call the
没有合适的资源?快使用搜索试试~ 我知道了~
TCP/IP协议栈 完整源代码 测试版
共171个文件
o:35个
d:32个
crf:32个
5星 · 超过95%的资源 需积分: 50 35 下载量 117 浏览量
2011-08-07
20:25:00
上传
评论 1
收藏 841KB RAR 举报
温馨提示
TCP/IP协议栈 完整源代码 测试版TCP/IP协议栈 完整源代码 测试版
资源推荐
资源详情
资源评论
收起资源包目录
TCP/IP协议栈 完整源代码 测试版 (171个子文件)
MobileGame.axf 82KB
NetworkDriver.c.bak 14KB
ENC28J60.c.bak 14KB
ENC28J60.h.bak 10KB
tcpip_Opt.Bak 5KB
tcpip_Uv2.Bak 4KB
OS_CORE.C 49KB
OS_FLAG.C 43KB
OS_TASK.C 35KB
OS_Q.C 34KB
OS_MUTEX.C 27KB
OS_MBOX.C 23KB
OS_SEM.C 19KB
DHCP.c 17KB
NetworkDriver.c 14KB
OS_MEM.C 14KB
socket.c 13KB
Os_cpu_c.c 13KB
OS_TIME.C 10KB
arp.c 8KB
icmp.c 7KB
UDP.c 7KB
IP.c 5KB
target.c 5KB
main.c 5KB
mbuf.c 4KB
NetworkInterface.c 3KB
uartprint.c 2KB
main.crf 56KB
dhcp.crf 49KB
socket.crf 47KB
ip.crf 47KB
icmp.crf 47KB
udp.crf 46KB
arp.crf 44KB
networkinterface.crf 42KB
mbuf.crf 42KB
target.crf 39KB
os_cpu_c.crf 39KB
uartprint.crf 39KB
os_flag.crf 26KB
os_core.crf 25KB
os_task.crf 25KB
os_q.crf 25KB
os_mutex.crf 24KB
os_mbox.crf 23KB
os_sem.crf 23KB
os_mem.crf 23KB
os_time.crf 22KB
networkdriver.crf 17KB
sysinit.crf 18B
font.crf 18B
lcd1602.crf 18B
graphic.crf 18B
zimo.crf 18B
gameplay.crf 18B
fontlib.crf 18B
gameinfo.crf 18B
lcd12864.crf 18B
keyprocess.crf 18B
networkinterface.d 1KB
main.d 1015B
socket.d 885B
arp.d 871B
udp.d 857B
icmp.d 844B
ip.d 834B
dhcp.d 815B
mbuf.d 749B
uartprint.d 729B
os_cpu_c.d 718B
target.d 682B
os_mutex.d 269B
os_time.d 262B
os_flag.d 262B
os_mbox.d 262B
os_task.d 262B
os_core.d 262B
os_sem.d 255B
os_mem.d 255B
os_q.d 241B
networkdriver.d 157B
keyprocess.d 44B
lcd12864.d 40B
gameinfo.d 40B
gameplay.d 40B
sysinit.d 38B
lcd1602.d 38B
graphic.d 35B
fontlib.d 35B
zimo.d 32B
font.d 29B
Last Loaded spi.DBK 178KB
tcpip_Mobile Game.dep 18KB
spi.DSN 178KB
uCOS_II.H 46KB
LPC2124.h 15KB
LPC2124.h 15KB
LPC2106.h 14KB
ENC28J60.h 10KB
共 171 条
- 1
- 2
资源评论
- cwpwenwen8882014-03-10资源比较好呢,适合初学者。。。
munk711
- 粉丝: 1
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功