/*
*********************************************************************************************************
* 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
没有合适的资源?快使用搜索试试~ 我知道了~
基于msp430的ucos操作系统移植程序
共119个文件
r43:48个
c:30个
h:17个
需积分: 16 7 下载量 98 浏览量
2013-10-06
10:49:04
上传
评论 2
收藏 656KB ZIP 举报
温馨提示
本代码是ucos操作系统在msp430系列单片机上的移植,下载后可以直接使用,测试运行正常。
资源推荐
资源详情
资源评论
收起资源包目录
基于msp430的ucos操作系统移植程序 (119个子文件)
uCOS-II--149.cspy.bat 3KB
ucos_2.cspy.bat 3KB
OS_CORE.C 49KB
OS_CORE.C 49KB
OS_FLAG.C 43KB
OS_FLAG.C 43KB
os_task.c 35KB
OS_TASK.C 35KB
OS_Q.C 34KB
OS_Q.C 34KB
OS_MUTEX.C 27KB
OS_MUTEX.C 27KB
OS_MBOX.C 23KB
OS_MBOX.C 23KB
OS_SEM.C 19KB
OS_SEM.C 19KB
OS_MEM.C 14KB
OS_MEM.C 14KB
os_dbg.c 11KB
os_dbg.c 11KB
app.c 10KB
OS_TIME.C 10KB
OS_TIME.C 10KB
Os_cpu_c.c 9KB
Os_cpu_c.c 9KB
IIC.c 6KB
usart0_uart.c 5KB
app.c 4KB
led.c 3KB
clock.c 2KB
uCOS_II.C 983B
uCOS_II.C 983B
ucos_2.d43 89KB
uCOS-II--149.d43 69KB
uCOS-II--149.dbgdt 9KB
ucos_2.dbgdt 5KB
uCOS-II--149.dep 37KB
ucos_2.dep 15KB
uCOS-II--149.dni 2KB
ucos_2.dni 1KB
uCOS-II--149.ewd 17KB
ucos_2.ewd 17KB
ucos_2.ewp 47KB
uCOS-II--149.ewp 46KB
ucos_2.eww 160B
uCOS-II.eww 149B
msp430f1611.h 80KB
msp430f1611.h 80KB
uCOS_II.H 46KB
uCOS_II.H 46KB
define.h 9KB
define.h 9KB
os_cfg.h 8KB
os_cfg.h 8KB
OS_CPU.H 5KB
OS_CPU.H 5KB
usart0_uart.h 949B
includes.h 934B
datatype.h 919B
includes.h 890B
IIC.h 332B
clock.h 199B
led.h 157B
uCOS-II--149.map 64KB
ucos_2.pbd 938B
uCOS-II--149.pbd 385B
usart1_uart.r43 215KB
system_init.r43 196KB
uCOS_II.r43 166KB
uCOS_II.r43 164KB
usart1_uart.r43 100KB
OS_CORE.r43 76KB
usart0_uart.r43 68KB
system_init.r43 66KB
OS_TASK.r43 60KB
mmc.r43 56KB
mmc.r43 50KB
pub.r43 49KB
OS_FLAG.r43 44KB
SHT11.r43 44KB
SHT11.r43 44KB
AD7798.r43 41KB
pub.r43 41KB
OS_Q.r43 39KB
Os_cpu_a.r43 34KB
PCF8563.r43 30KB
Os_cpu_a.r43 29KB
PCF8563.r43 26KB
OS_SEM.r43 24KB
app.r43 23KB
IIC.r43 23KB
OS_TIME.r43 22KB
IIC.r43 21KB
app.r43 21KB
globes.r43 17KB
usart0_uart.r43 15KB
globes.r43 14KB
os_dbg.r43 13KB
led.r43 12KB
clock.r43 12KB
共 119 条
- 1
- 2
资源评论
sunhou123
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功