电子系统设计网站
首页 | 登录 | 现在注册    2008年7月6日 

大学生加油站 
也许你即将迈入社会,完成从校园人到社会人的转变。或许你对未来有着宏远的规划,或许对未来有着不确定的忧虑,大学生加油站都为你提供一个备战未来的平台。无论是毕业设计遇到了问题,基础知识点的讨论,还是对未来的职业生涯规划存有疑虑,在这里都可以寻找到满意的答案。广大的工程师朋友也可以在此追忆美好的校园生活。希望以这里为起点,书写你精彩的职业生涯吧!



发表新主题 发表新主题 
加入个人信息中心收藏夹 收藏   打印这个帖子... 打印   关注该主题... 关注   推荐这个帖子... 推荐
楼主      问题: [交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-18 下午4:07

作者: peigongjun
等级: 逍遙剑客
积分: 1410 分

发送消息

查看用户的所有发言

掌握了UCOS-II的高手、正在学习UCOS-II的菜鸟们都来看看!
都发表一下自己对UCOS-II的见解,各抒己见啊!
上传一篇:UCOS-II的说明文档
附件:
UCOS-II说明.doc 下载次数:   75

掌声 (
5
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 1 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-19 下午6:40

作者: peigongjun
等级: 逍遙剑客
积分: 1410 分

发送消息

查看用户的所有发言

浅析μC/OS-II v2.85内核OSTimeDly()函数工作原理
//1.OSTimeDly()函数
void OSTimeDly (INT16U ticks)
{
INT8U y;
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
#endif
if (OSIntNesting > 0) {
return;//在中断处理函数中调用了OSTimeDly(),那么直接退出
}
if (ticks > 0) {
OS_ENTER_CRITICAL();
//调用OSTimeDly()的进程自己把自己从就绪控制矩阵中拿下来,
//即:去掉调度器(x,y)矩形阵列(OSRdyTbl,OSRdyGrp)中该task对应的bit位,使得调度器不考虑
//该task的调度
y = OSTCBCur->OSTCBY;
OSRdyTbl[y] &= ~OSTCBCur->OSTCBBitX;
if (OSRdyTbl[y] == 0) {
OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
}
//延时ticks值,放入OSTCBDly单元,在os时钟滴答处理函数OSTimeTick()中,会处理该单元[gliethttp]
OSTCBCur->OSTCBDly = ticks;
OS_EXIT_CRITICAL();
//因为本task正在运行,所以本task现在的优先级最高,现在本task已经将自己从就绪控制矩阵中--调度器(x,y)矩形阵列
//把自己摘掉,所以调度函数OS_Sched()一定会切换到另一个task中执行新task的代码[gliethttp]
OS_Sched();//具体参见《浅析μC/OS-II v2.85内核调度函数》
}//ticks==0,那么什么也不做
}
//----------------------------------------------------------------------
//2.OSTimeTick()--在定时中断里引用的系统滴答函数
void OSTimeTick (void)
{
OS_TCB *ptcb;
#if OS_TICK_STEP_EN > 0
BOOLEAN step;
#endif
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;//该3方式将使中断状态寄存器放入堆栈中

#endif

#if OS_TIME_TICK_HOOK_EN > 0
OSTimeTickHook();
#endif
#if OS_TIME_GET_SET_EN > 0
OS_ENTER_CRITICAL();
OSTime++;
OS_EXIT_CRITICAL();
#endif
if (OSRunning == OS_TRUE) {
#if OS_TICK_STEP_EN > 0
//控制内核的tick
switch (OSTickStepState) {
case OS_TICK_STEP_DIS:
step = OS_TRUE;
break;
case OS_TICK_STEP_WAIT:
step = OS_FALSE;
break;
case OS_TICK_STEP_ONCE:
//本次tick将将影响到task的OSTCBDly域
//但以后的tick将一直被屏蔽,不会影响到OSTCBDly域
//直到外部将OSTickStepState改变为止[gliethttp]
step = OS_TRUE;
OSTickStepState = OS_TICK_STEP_WAIT;
break;
default:
step = OS_TRUE;//本次tick将影响到task的OSTCBDly域
OSTickStepState = OS_TICK_STEP_DIS;
break;
}
if (step == OS_FALSE) {
return;
}
#endif
ptcb = OSTCBList;
//2007-09-08 gliethttp
//OSTCBList是一个按进程创建的先后顺序链接成的task单向链表,最后创建的task在最前面,最先创建的
//task在单向链表的尾端,
//所以OS_TaskIdle空闲进程在链表的最后,因为它最先创建
while (ptcb->OSTCBPrio != OS_TASK_IDLE_PRIO) {
OS_ENTER_CRITICAL();
if (ptcb->OSTCBDly != 0) {
if (--ptcb->OSTCBDly == 0) {
//该task的延时时间已到,解析此次延时是OSTimeDly()引起的,还是OSQPend()之类超时引起的[gliethttp]
if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
//2007-09-08 gliethttp
//如:由OSSemPend (pevent,timeout,perr);定义的timeout已经到了,对应task需要运行了
//超时时间到,所以不论当前进程是在做什么,只要时间一到
//该task就可以运行了,所以清除所有事件标志,之后状态标示为OS_STAT_PEND_TO(超时)
ptcb->OSTCBStat &= ~(INT8U)OS_STAT_PEND_ANY;
ptcb->OSTCBStatPend = OS_STAT_PEND_TO;//超时异常
} else {
//2007-09-08 gliethttp
//说明该task调用的是OSTimeDly()
ptcb->OSTCBStatPend = OS_STAT_PEND_OK;//正常结束
}
if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {
//2007-09-08 gliethttp
//如果该task没有suspend,那么把当前就绪的task加入到运行调度器的就绪控制矩阵中
//等待被调度
OSRdyGrp |= ptcb->OSTCBBitY;
OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
}
}
}
ptcb = ptcb->OSTCBNext;//继续运算下一个task的OSTCBDly时间域
OS_EXIT_CRITICAL();
}
}}

掌声 (
5
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 2 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-19 下午6:43

作者: peigongjun
等级: 逍遙剑客
积分: 1410 分

发送消息

查看用户的所有发言

推荐一个网站:http://group.ednchina.com/29/是讨论UCOS-II的

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 3 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-20 上午7:45

作者: james
等级: 名震天下
积分: 2244 分

发送消息

查看用户的所有发言

學習!學習!

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 4 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-20 上午9:14

作者: Vincentjia
等级: 初入江湖
积分: 106 分

发送消息

查看用户的所有发言

研究研究.

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 5 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-20 上午11:20

作者: 孤山剑隐
等级: 仗剑江湖
积分: 653 分

发送消息

查看用户的所有发言

学习了!谢谢

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 6 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-20 下午12:45

作者: zhenqing
等级: 誉满江湖
积分: 1660 分

发送消息

查看用户的所有发言

谢谢

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 7 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-20 下午8:00

作者: snowboy1978
等级: 名震天下
积分: 2535 分

发送消息

查看用户的所有发言

谢谢楼主,收下了!

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 8 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-24 上午9:49

作者: zkcms
等级: 崭露头角
积分: 429 分

发送消息

查看用户的所有发言

谢谢楼主,我很想学习uCOS-II,可是在网上找不到什么有用的资料,楼主能否把资料共享一下?多谢!zkcms@163.com

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 9 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-24 下午4:02

作者: peigongjun
等级: 逍遙剑客
积分: 1410 分

发送消息

查看用户的所有发言

网友zkcms,我已把相关资料发给你,请注意查收!

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 10 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-3-25 上午9:58

作者: hwong
等级: 仗剑江湖
积分: 685 分

发送消息

查看用户的所有发言

谢谢,正好最近在用这个系统,太感谢了!

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
第 11 楼      回复主题:[交流贴]UCOS-II的学习和应用!
发布时间: 2008-4-28 上午8:50

作者: baishui635
等级: 学有小成
积分: 232 分

发送消息

查看用户的所有发言

楼主能不能也给我发一些关于uCOS-II的学习资料,我也是刚刚接触,做毕设要用,谢谢了。我的邮箱是libaofeng85@yahoo.cn

掌声 (
0
)
板砖 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
发表新主题 发表新主题
--- 现有 11个回复,共 1页,目前第 1页 ---





推荐设计专栏
下一代手机设计及测试解决方案专栏
高性能模拟技术专栏
大学生优秀设计作品园地
最佳设计产品赏析
移动电视解决方案专栏
高清数字电视设计专栏
汽车电子设计专栏
智能家居系统设计专栏
GPS应用设计专栏
IIC 2007专题报道
 

更多专题...


共享资源


共享资源中心上线!
上千份电子设计资料供您下载!
点击进入 分享资料

 
论坛实力派擂台赛

电子系统设计论坛
实力派悉数登场
敬请关注!
 
论坛热议
论坛又添新功能啦 Hot!
为什么大学毕业生工作难找? Hot!

 
eMedia Asia 电子工程专辑 | 手机设计 | 媒体播放器 | 家庭娱乐系统 | 模拟混合信号 | 汽车电子设计 | 工业控制 | 电源系统 | 国际电子商情
环球资源 环球资源企业网 | 环球资源内贸网 | 世界经理人 | 经理人论坛 | Electronic Components | Computer Products
 
 
RSS新闻聚合 | 意见反馈 | 网站导航 | 帮助 | 关于我们 | 隐私政策 | 联系我们 | 使用条款 | 安全承诺 | 网址推荐
Copyright © 2008 eMedia Asia Ltd. 本网站所有内容均受版权保护。
未经版权所有人明确的书面许可,不得以任何方式或媒体翻印或转载本网站的部分或全部内容。