1. 时钟信号源(重要)
a) 任何操作系统都要提供一个周期性的信号源,以供系统处理诸如延时、超时等与时间有关的事件,这个周期性的信号源叫做时钟。
b) 这个信号源由芯片的硬件定时器来产生,一般是毫秒级别的。所以移植的时候需要选定一个定时器来产生时钟信号.
2. 时钟节拍
时钟节拍是两次时钟信号源中断之间相间隔的时间,是最小的时钟单位。
3. 时钟信号源中断处理函数(重要)
a) 这个产生时钟信号源的硬件定时器的中断处理函数叫做OSTickISR(),一般使用汇编来写。
b) 它的任务有两个:(1)给计数器OSTime加1;(2)遍历任务控制块链表的所有任务控制块,了解每个任务的延时状态,使其中已经到延时时限的非挂起任务进入就绪状态。
4. 时钟节拍的钩子函数
uC/OS系统提供了不少时钟节拍服务的钩子函数,应用程序人员能够在钩子函数里编写一些自己的代码。不过实际有什么好处暂时不知道。
5. 任务的延时
空闲任务必须在适当的时候调用OSTimeDly()或OSTimeDlyHMSM(),使当前任务的运行延时一段时间,并进行一次任务调度,让出CPU的使用权。
6. 取消任务的延时
延时的任务可以通过在其他任务中调用函数OSTimeDlyResume()取消延时而进入就绪状态。由于uC/OS是可剥夺型内核,所以假如那个任务比正在运行的任务优先级别高,则立即引发一次调度。
7. 系统时间管理
uC/OS 2定义了一个INT32U类型的全局变量OSTime来记录系统发生的时钟节拍数。OSTime在应用程序调用OSStart()时被初始化为0,以后每发生1个时钟节拍,OSTime的值就加1。所以这个系统时间不是生活中的时间,而是系统运行的时间
获取系统时间:调用函数OSTimeGet()
设置系统时间:OSTimeSet()