ucosII
你的牌打的太好啦
这个作者很懒,什么都没留下…
展开
-
typedef常用方法
C语言的关键字typedef特别容易被初学者忽略,因为大多数教材只用简单的一句话来介绍它的用途:为数据定义别名。 下面给出typedef的常用方法:1.复杂的数据类型名称简化typedef void (* PFON)(int,int); PFON function; //这就定义了一个返回值为void有两个参数都为int的函数指针function; 即 void原创 2017-03-29 19:47:57 · 437 阅读 · 0 评论 -
控制块
操作系统实质上是一种管理软件。而所谓管理,就是在了解被管理对象的基本信息之后,在需要时,按照某种规则对这些被管理对象进行分配、调度等操作。 目前,无论是什么操作系统,在它的诸多管理用表中,控制块最为重要。 在操作系统中的每一个被管理对象,不管对象是一个软件模块还是一个硬件装置,它都至少会有一个记录其基本信息的数据结构,操作系统就是依据这个控制块提供的信息来对这些对象进行管理。控制块就是被控原创 2017-03-29 19:45:44 · 492 阅读 · 0 评论 -
uCOSII中的任务
任务和任务控制块: 在处理大而复杂的问题时,一个惯用而有效的方法就是“分而治之”,把一个大问题分解成多个相对简单、比较容易解决的小问题,小问题逐个解决了,大任务也就随之解决了。在uCOSII中,与上述小问题对应的程序实体就叫做“任务”。从代码上来看,uCOSII的任务就是一个C函数。作为任务,必须要接受操作系统的管理,即有一个控制块,这就是所谓的任务控制块。 任务控制块不仅与程序控制块有区原创 2017-03-29 19:43:36 · 655 阅读 · 0 评论 -
任务控制块及其链表
typedef struct os_tcb{ OS_STK*OSTCBStkPtr;//指向任务堆栈栈顶的指针#if OS_TASK_CREATE_EXT_EN viod*OSTCBExtPtr;//指向任务控制块扩展的指针 OS_STK*OSTCBStkBottom;//指向任务堆栈栈底的指针 INT32UOSTCBStkSize;//任务堆栈的长度 INT原创 2017-03-29 19:30:38 · 1727 阅读 · 0 评论 -
任务就绪表及任务调度
任务就绪表:为就绪态的任务分配CPU是多任务操作系统的核心工作。这个工作有两项技术: 1. 判断哪些任务处于就绪态。 2. 进行任务调度。(任务调度就是通过一个算法在就绪任务中确定应该马上运行的任务)在uCOSII中,任务就绪表就是一个位图OSRdyTbl [ 0 ]:D7 -D0; OSRdyTbl [ 1 ]:D15-D8; OSRdyTbl [ 2 ]:D23-D16; OSRd原创 2017-03-29 19:08:16 · 4104 阅读 · 0 评论 -
任务切换宏的工作和工作方式
任务切换宏OS_TASK_SW()的主要工作就是进行任务切换。任务切换就是中止正在运行的任务,转去运行另外一个任务(就绪表中优先级最高的任务)。 任务切换的工作是靠OSCtxSw()来完成的。**OSCtxSw**()要依次做如下7项工作: 1)把终止任务的断电指针保存到任务堆栈 2)把CPU通用寄存器入栈 3)把中止任务的任务堆栈指针当前值保存到任务控制块OSTCBStk原创 2017-03-29 18:55:53 · 628 阅读 · 0 评论 -
任务的创建
UCOSII通过任务控制块来管理任务,创建任务的工作实质上是创建一个任务控制块,并通过任务控制块把任务代码和任务堆栈关联起来形成一个完整的任务。 还要使刚创建的任务进入就绪态,并接着引发一次任务调度。创建任务函数 OSTaskCreate()、OSTaskCreateExt(),OSTaskCreateExt()是OSTaskCreate()的扩展,提供了一些附加功能。 INT8U OSTaskC原创 2017-03-29 18:51:55 · 281 阅读 · 0 评论 -
函数指针
函数指针变量的格式:返回值类型 (* 变量名)(参数1类型,参数2类型,……)例:int (*)(int,float);int (* pf)(int,float);下面给出一个函数指针的用法示例:#include "stdio.h" int function_1(int,float) { …… return 0; } int main() { pf = function原创 2017-03-05 00:57:49 · 182 阅读 · 0 评论 -
函数指针做函数参数及回调函数
#include "stdio.h"int usr_1(int a,float b) { printf("%s\n",“usr_1”); return 0; }int usr_2(int a,float b) { printf("%s\n",“usr_2”); return 0; }int usr_3(int a,float b) { printf("%s\n原创 2017-03-29 19:49:10 · 240 阅读 · 0 评论