ucosIII
索托飞人
这个作者很懒,什么都没留下…
展开
-
RTOS学习之旅(六)(ucosIII 时基列表)
时基列表是跟时间相关的,处于延时的任务和等待事件有超时限制的任务就会从就绪列表中移除,然后插入到时基列表。如果任务延时时间结束或超时,那么就让任务就绪,从时基列表中移除,插入的就绪列表中。目前,在OS中实现两个列表,一个是就绪列表,一个是时基列表。1.时基列表变量时基列表在代码层面上又全局数组OSCfg_TickWheel[]和全局变量OSTickCtr构成。#define OS_CFG_TICK_WHEEL_SIZE 17uOS_TICK_SPOKE OSCfg_TickW原创 2020-05-14 16:56:01 · 746 阅读 · 0 评论 -
RTOS学习之旅(五)(ucosIII 支持多优先级)
之前OS还没有优先级,只能任务切换。在这之后加入了优先级,数字优先级越小,逻辑优先级越高。其实,优先级这里部分就是对之前代码添加一些优先级有关的信息,其他不变。1.定义优先级相关全局变量在支持任务多优先级的时候,需要在 os.h 头文件添加两个优先级相关的全局变量。//当前优先级OS_EXT OS_PRIO OSPrioCur//最高优先级OS_EXT OS...原创 2020-05-13 09:47:46 · 304 阅读 · 0 评论 -
RTOS学习之旅(四)(ucosIII 优先级表 就绪列表)
在 uC/OS-III 中,任务被创建后,任务的 TCB 会被放入就绪列表中,表示任务在就绪,随时可能被运行。就绪列表包含一个表示任务优先级的优先级表,一个存储任务 TCB 的 TCB 双向链表。1.优先级表1.1优先级表介绍优先级表实质上是一个数组。在os_prio.c中定义。CPU_DATA OSPrioTbl[OS_PRIO_TBL_SIZE];数组类型为 CPU_DATA...原创 2020-05-03 17:23:23 · 862 阅读 · 0 评论 -
RTOS学习之旅(三)(ucosIII 任务时间片 阻塞延时与空闲任务 时间戳)
在之前的代码写的任务切换,虽然实现了任务切换,但是还是没做到双任务同时运行。如果在这个基础上加入Systick中断,就可以实现双任务时间片运行,即每个任务运行时间是一样的。1.Systick简介RTOS 需要一个时基来驱动,系统任务调度的频率等于该时基的频率。通常该时基由一个定时器来提供,也可以从其它周期性的信号源获得。刚好 Cortex-M 内核中有一个系统定时器SysTick,它内嵌在 N...原创 2020-05-01 18:17:25 · 970 阅读 · 0 评论 -
RTOS学习之旅(二)(ucosIII OS初始化 任务切换)
之前学习了任务的创建和TCB模块,在这之前还有就是系统是初始化。1.OS系统初始化OS 系统初始化一般是在硬件初始化完成之后来做的,主要做的工作就是初始化uC/OS-III 中定义的全局变量。OSInit()函数在文件 os_core.c。void OSInit(OS_ERR *p_err){ /*系统用一个全局变量 OSRunning 来指示系统的运行状态,刚开 始默认STOPPED...原创 2020-04-27 14:13:52 · 433 阅读 · 0 评论 -
RTOS学习之旅(一)(ucosIII 任务初始化创建及TCB)
最近有时间学习操作系统方面的知识,所以做些笔记加深印象。在这方面确实是小白了。学的是野火的资料。这个资料确实不错,但是有些地方还是要自己进行总结归纳进行学习。我总结这个有点多,慢慢看可以看懂的。1.前后台系统和多任务系统1.1 前后台系统之前接触的比较多的是前后台系统,就是外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里我们称为后台,main 函数里面的无限循环...原创 2020-04-25 16:35:53 · 850 阅读 · 0 评论