第三章 内核结构
1. 临界段
uc为了处理临界段代码,需要开关中断。 因为不同的系统硬件,有不同的实现方法,uc定义了os_enter_critical 和 os_exit_critical宏,放在os_cpu.h文件中
2.任务
任务就是一个无限的循环,永不返回。(所以返回值为void). 任务可以传入参数。这样可以建立多个相同代码的任务,但是可以有不同的参数。
void xxxTask(void *pData)
uc/os总是执行进入就绪态的最高优先级的任务,(如果有高优先级的任务一直在执行,别的任务就没有办法执行了,所以如果要共享cpu,就要让出来,等待一段时间,让别的任务有机会执行。)
当所有任务都在等待中时,就会运行idle任务。
3.任务控制块
ucos用它来保存任务的当前状态,当任务重新执行的时候,tcb能够确保任务返回到中断时的状态
OSTcbStkPtr 当前任务的堆栈的指针
OSTcbPrev OSTcbNext 双向链表使得建立任务时,ostcb能够被快速的插入和删除
OS_MAX_TASKS 在OS_CFG.H中,定义少些,可以省掉tcb所占用的内存
第五章 时间管理
OSTimeDly(INT16U ticks)
延时以时钟节拍记。
×:如果要延时一个时钟节拍,任务挂起后会在一个时钟到来时就要执行(如果没有其他就绪的高优先级任务),这之间的间隔是不定的,因为任务挂起与时钟节拍非同步的,因此中间的间隔会在一个时钟节拍之间变化。
因此,如果要延时一个时钟节拍,必须至少延迟2个时钟节拍。
--OSTimeDlyHMSM()
可以按直接指定时分秒延时,最多256小时
转载于:https://www.cnblogs.com/jiangxinghui/archive/2009/09/04/1560449.html