引言 C/ OS 是一种多任务实时操作系统。内核源代码公开、短小精干、可裁剪、执行时间可确定, 可移植性较强, 非常适用于一些中小型嵌...
分类:单片机技术进阶 点击:6 日期:2018-09-07ucosii任务调度 A) 任务调度发生的时间 a)系统刚启动,完成初始化和至少建立了一个任务后,通过OSStart()函数调用__OSStartHighRdy函数将OSRunning=TRUE后,通过任务切换函数OSCtxSw来启动。 b) 系统运行过程中,新建任务的时需要启动任务调度器OSSched(),...
分类:UC/OS ii 点击:88 日期:2016-06-06ucosii任务的创建过程 通过函数OSTaskCreate()或者OSTaskCreateEXT()两个函数来创建一个任务。 A、能否创建成功取决于这么几个条件: a) 分配给即将要创建任务的优先级是否合法,prio b) 分配给将要创建任务的优先级是否已经被已存任务所占用,若没有被占用...
分类:UC/OS ii 点击:107 日期:2016-06-06ucosii 空任务控制块链表 空任务控制块链表,用来管理空任务控制块。当新建任务时,需要从该链表获取一个OS_TCB, 并将其放于任务控制块链表中。在这过程中主要是通过两个OS_TCB指针来完成,一个是OSTCBFreelist,另一个是OSTCBList,这两个指针始终指向链表的...
分类:UC/OS ii 点击:156 日期:2016-06-06ucosii OSMapTbl和OSUnMapTbl 由于ucos-ii为实时系统,为了尽量缩短查找表所用的时间,其还定义了两个常数数组,一个为OSMapTbl[8]和OSUnMapTbl[256]。(我个人认为这两个数组的设计最为巧妙和最有价值),通过这两张表很方便的就可以查询是否有任务处于就绪...
分类:UC/OS ii 点击:197 日期:2016-06-06ucosii OSRdyTbl OSRdyTbl[8]的每个元素为8位,每一位代表一个任务优先级。这样8*8刚好为64,所以刚好可以存放完ucos-ii的最大任务总数。在该数组中,根据每位的值为0/1来决定其对应优先级的任务是否处于就绪态。为0表示该优先级任务不处于就绪状态,为1表示...
分类:UC/OS ii 点击:33 日期:2016-06-06ucosii OSRdyGrp优先级分组** OSRdyGrp存放的优先级分组的号。若其中的有一位置1, 表明其有任务处于就绪状态,若为0表示没有任务处于就绪状态。假设OSRdyGrp的第i位为1, 则表示处于任务优先级(i-1)*8~i*8-1中,至少有一个任务的处于就绪态(其中i属于(1~8...
分类:UC/OS ii 点击:74 日期:2016-06-06Ucos II 创建第一个任务之二 下面具体讲解下任务创建的过程 下图就是创建任务函数的实现程序。 INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio) { void *psp; INT8U err; if (prio OS_LOWEST_PRIO) { (1) return (OS_P...
分类:UC/OS ii 点击:62 日期:2016-06-06Ucos II创建第一个任务 我们已经从远处欣赏过ucos II 的身材,现在可以近距离地欣赏Ucos II性感的局部了。 任务是什么? 有一句话:CPU不同的时刻段总是在执行着优先级最高的任务。所以CPU总是在不同的任务间切换。任务好比linux中的进程。 有c写过单片机程...
分类:UC/OS ii 点击:48 日期:2016-06-06stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它可以大大加速我们 开发 stm32。 首先从 st 公司的网站下载最新的 stm32 标准外设库,写本文时最新的版本是 V3.5.0。 解压该 zip 文件,得到如下文件夹和文件 STM32F10x_StdPeriph_Lib_V3.5.0 _htmresc...
分类:UC/OS ii 点击:105 日期:2016-06-06