UCOS
d89538239
这个作者很懒,什么都没留下…
展开
-
UCOS-III软件定时器
第24章软件定时器OSInit()中调用OS_TmrIni()来配置定时器频率与创建软件定时器任务OS_TmrTask()。软件定时器创建函数OSTmrCreate()将定时器添加到双向调试链表。启动软件定时器函数 OSTmrStart()定时器任务OS_TmrTask()1.OSTaskSemPend()等待信号量(在 SysTick 中断服务函数中OSTmrUpdate...原创 2020-01-04 23:29:01 · 187 阅读 · 0 评论 -
UCOS-III 消息队列
第20章消息队列消息池OSCfg_MsgPool[OS_CFG_MSG_POOL_SIZE] ,OS_CFG_MSG_POOL_SIZE为消息池大小。OS_MsgPoolInit() 函数就是用来初始化消息池构成单向链表。消息队列发送函数 OSQPost()...1.满足条件调用OS_QPost()进行发送......1.1获取等待列表,看是否有任务在等待消息............原创 2019-11-17 23:19:54 · 261 阅读 · 0 评论 -
UCOS-III 事件
事件设置OSFlagPost1.满足条件调用OS_FlagPost()...1.按要求将事件置一或是清零...1.2获取等待事件任务......1.2.1如果当前没有任务在等待事件,置位后直接退出即可......1.2.2如果当前有任务在等待事件,遍历等待列表的所有任务.........1.2.2.1 要求任务等待的标志位都置 1且为1,OS_FlagTaskRdy()函数...原创 2019-10-31 23:13:15 · 502 阅读 · 0 评论 -
UCOS-III 任务信号量
任务信号量必须指定接收信号量的任务,才能正确发送信号量,任务信号量可以满足设计需求,那么尽量不要使用普通信号量,这样子设计的系统会更加高效。发布任务信号量OSTaskSemPost()...1.满足条件,调用 OS_TaskSemPost ()函数将信号量发布到指定任务AppTaskPendTCB中......1.1.目标任务块为0,则将信号量发布给当前任务,根据目标状态区分...原创 2019-10-29 23:19:08 · 300 阅读 · 0 评论 -
UCOS-III 任务消息队列
任务消息队列只有所属任务才可以获取(接收)这个任务消息队列的消息,其他任务只能给这个任务消息队列发送消息,却不能获取。发布任务消息到任务OSTaskQPost()满足发布条件直接调用OS_TaskQPost()发布,例如发送到任务块AppTaskPendTCB。...1.获取目标任务,为0则是当前任务...2.目标任务状态......2.1.非等待状态,调用OS_MsgQP...原创 2019-10-28 23:02:32 · 380 阅读 · 0 评论 -
UCOS-III 互斥量
互斥量释放OSMutexPost()互斥量的释放只能在任务中,不允许在中断中释放互斥量。观测TestMutex.OwnerNestingCtr...1.调用OS_OSMutexPost()进行释放,判断--OwnerNestingCtr的值......1.1>0,表示互斥量仍被嵌套还未释放完,返回......1.2==0,被释放,获取互斥量等待列表.........1...原创 2019-10-27 19:15:35 · 339 阅读 · 0 评论 -
21 UCOS-III 信号量
信号量释放OSSemPost()...1.满足信号量释放条件调用OS_SemPost()进行释放......1.1从信号量等待列表中判断是否有任务等待信号量.........1.1.1无,信号量是否溢出(根据计数的的数据类型判断)。............1.1.1.1溢出,返回报错............1.1.1.2可用信号量计数++.........1.1.2有,根据...原创 2019-10-25 13:19:31 · 313 阅读 · 0 评论 -
UCOS-III 消息队列
消息队列发送消息:如果系统有任务阻塞在消息队列中,那么在发送了消息队列的时候,会将任务解除阻塞1.OSQPOST()判断是否是否满足发送消息队列条件...1.1满足则OS_QPost()发送消息,等待列表中判断是否有任务等待......1.1.1无,则用OS_MsgQPut()将消息根据FIFO/LIFO放入队列中......1.1.2有,调用OS_Post()........原创 2019-10-24 15:47:31 · 209 阅读 · 0 评论 -
UC/OS-III 时基列表的运作
1.任务初始化:初始化堆栈及堆栈大小优先级添加任务块到就绪列表(就序列表的下标=优先级)时间片参数(任务运行时间片,时间片计数,一个优先级只有一个任务则都设为0)2.sysTick中断中进行任务调度更新时基列表(时基到时从时基列表中移除任务,并插入到就绪列表)时间片调度,时间片消耗完,任务列表中同一优先级切换(同一优先级有多个任务时才需要时间片)任务调度,切换到最高...原创 2019-10-24 15:46:51 · 270 阅读 · 0 评论 -
UCOS-III 内存管理函数
第26内存管理函数OSMemCreate()创建内存管理对象1.至少两个内存块,每个内存块为一个静态的内存池2.内存池的大小不能小于4个字节(32位机),4字节对齐。3.将内存块链接成单链表(每个块的前4个字节保存下个块的首地址)获取内存块函数OSMemGet()OSMemPut() 内存释放...原创 2020-01-17 10:13:24 · 413 阅读 · 0 评论