/*
*********************************************************************************************************
* uC/OS-II 实时内核
* 内核函数
*
* (c) 版权 1992-2002, 所有版权归Jean J. Labrosse, Weston, FL 所有
*
*
* 文件名称 : OS_CORE.C
* 程序作者 : 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 */
};
/*
*********************************************************************************************************
* 函数原型
*********************************************************************************************************
*/
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);
/*$换页*/
/*
*********************************************************************************************************
* 初始化
*
* 函数描述: 该函数用于初始化 uC/OS-II的内部变量和数据结构,并且在创建uC/OS-II之前目标调用,且在调用
* OSStart()之前调用
*
* 输入参数 : 无
*
* 返回值 : 无
*********************************************************************************************************
*/
void OSInit (void)
{
#if OS_VERSION >= 204
OSInitHookBegin(); /* 调用特定的处理器的初始化代码 */
#endif
OS_InitMisc(); /* 初始化杂项变量 */
OS_InitRdyList(); /* 初始化就绪列表 */
OS_InitTCBList(); /* 初始化任务控制块的空余列表 */
OS_InitEventList(); /* 初始化事件的空余列表 */
#if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
OS_FlagInit(); /* 初始化事件标志结构 */
#endif
#if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
OS_MemInit(); /* 初始化内存管理器 */
#endif
#if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
OS_QInit(); /* 初始化消息队列结构 */
#endif
OS_InitTaskIdle(); /* 创建空闲任务 */
#if OS_TASK_STAT_EN > 0
OS_InitTaskStat(); /* 创建统计任务 */
#endif
#if OS_VERSION >= 204
OSInitHookEnd(); /* 调用特定的处理器的初始化代码 */
#endif
}
/*$换页*/
/*
*********************************************************************************************************
* 进入中断服务函数
*
* 函数描述: 该函数通知 uC/OS-II即将进入中断服务子程序。允许uC/OS-II跟踪中断嵌套,并因此只能在最后的嵌套中断
* 服务子程序中完成再调度。
*
* 输入参数 : 无
*
* 返回值 : 无
*
* 注释 : 1) 该函数应使用关闭的中断调用
* 2) ISR 能直接增加嵌套的值而无需调用函数,因为中断嵌套声明为全局变量。
* 3) 即使直接增加中断嵌套的值也需调用OSIntExit()
* 4) 必须成对调用函数 OSIntEnter() and OSIntExit()
* 5) 中断嵌套深度可达到255 级
* 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++; /* 增加中断服务函数的嵌套等级 */
}
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* 退出中断服务函数
*
* 函数描述: 该函数通知 uC/OS-II已完成中断服务子程序. 当完成最后的嵌套中断时,uC/OS-II 将调用调度器决定
* 是否有新的高优先级的任务准备就绪。
* 输入参数: 无
*
* 返回值: 无
*
* 注释 : 1) 必须成对调用函数 OSIntEnter() and OSIntExit()
* 2) 当调度器上锁时,再调度失效 见OSchedLock())
*********************************************************************************************************
*/
void OSIntExit (void)
{
#if OS_CRITICAL_METHOD == 3 /* 为CPU状态寄存器分配存储变量 */
OS_CPU_SR cpu_sr;
#endif
if (OSRunning == TRUE)
{
OS_ENTER_CRITICAL();
if (OSIntNesting > 0)
{ /* P
没有合适的资源?快使用搜索试试~ 我知道了~
基于uCOSII的小型GUI的应用程序实验
共84个文件
c:27个
o:22个
h:19个
需积分: 9 65 下载量 89 浏览量
2013-12-08
20:01:44
上传
评论
收藏 1.58MB ZIP 举报
温馨提示
设计基于uCOSII的多任务综合应用 1按键任务 捕获上、下、左、右、回车四个按键 2绘图任务 显示上、下、左、右、回车四个矩形按键框,当相应按键捕获后应用不同颜色显示激活按键; 3串口任务 当捕获回车按键后串口输出当前激活按键的值如"Left Button Pressed!"等 purple
资源推荐
资源详情
资源评论
收起资源包目录
Tasks_UCOSII.zip (84个子文件)
Tasks_UCOSII
uCOSII
SRC
OS_MBOX.C 21KB
uCOS_II.C 1KB
uCOS_II.H 45KB
OS_TIME.C 8KB
OS_MUTEX.C 26KB
OS_TASK.C 32KB
OS_FLAG.C 40KB
OS_SEM.C 17KB
OS_CORE.C 44KB
OS_Q.C 30KB
OS_MEM.C 12KB
INC
Includes.h 2KB
OS_CFG1.H 8KB
OS_CFG.H 9KB
CPU
OS_CPU_C.C 9KB
OS_CPU.H 7KB
OS_CPU_A.S 11KB
LCDDRV
SRC
lcdlib.c 3KB
lcd.c 1KB
INC
lcd.h 239B
lcdlib.h 2KB
Gui
KEY
Key.c 5KB
Glib
Glib.c.bak 12KB
Glib.c 18KB
Glib.h 15KB
Font
Font_Cn14.c 2KB
Font_Cn16.c 2KB
Font8x16.c 26KB
Gchar.c 12KB
Font_Cn12.c 2KB
Init
data.h 2KB
GUI_Init.c 1KB
Uart_driver
SRC
Uart_driver.c 11KB
INC
Uart_driver.h 1KB
kbddriver
SRC
ARM7279.C 8KB
INC
keydriver.h 2KB
Tasks_Data
CWSettingsWindows.stg 3KB
Debug
touch.bin 564KB
ObjectCode
GUI_Init.o 13KB
ARM7279.o 46KB
2410addr.o 10KB
2410INIT.o 531KB
TARGET.o 56KB
Glib.o 29KB
lcd.o 29KB
OS_CPU_A.o 3KB
Font_Cn14.o 10KB
lcdlib.o 29KB
Gchar.o 21KB
Font8x16.o 12KB
Uart_driver.o 39KB
Main.o 61KB
Key.o 29KB
uCOS_II.o 107KB
Font_Cn16.o 10KB
Font_Cn12.o 10KB
MMU.o 29KB
OS_CPU_C.o 22KB
2410SLIB.o 3KB
2410LIB.o 36KB
Tasks.axf 753KB
TargetDataWindows.tdt 141KB
Application
SRC
Main.c 13KB
INC
config.h 2KB
config.h.bak 2KB
Tasks.mcp 104KB
HZK
HZK14.BIN 224KB
HZK16.BIN 261KB
HZK12.BIN 256KB
Startup2410
SRC
MMU.C 6KB
Option.s 2KB
Memcfg.s 3KB
2410ADDR.S 26KB
2410LIB.C 13KB
TARGET.C 7KB
2410SLIB.S 22KB
2410INIT.S 14KB
INC
MMU.H 2KB
2410LIB.H 3KB
target.h 2KB
2410ADDR.H 36KB
Option.h 3KB
2410SLIB.H 3KB
Def.h 2KB
共 84 条
- 1
资源评论
lijiaying
- 粉丝: 12
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 高等数学第一章第二节数列的极限
- Python 版冒泡排序算法源代码
- tensorflow-gpu-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- tensorflow-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- Python版本快速排序源代码
- Python 语言版的快速排序算法实现
- 450815388207377安卓_base.apk
- 超微主板 X9DRE-TF+ bios 支持 nvme启动
- 基于Python通过下载气象数据和插值拟合离散数据曲线实现对寒潮过程的能量分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功