第3章 μC/OS-II的中断和时钟
3.1 μC/OS-II的中断74
3.1.1 μC/OS-II的中断过程74
3.1.2 中断级任务切换函数78
3.1.3 应用程序中的临界段78
3.2 μC/OS-II的时钟80
3.3 时间管理88
3.3.1 任务的延时88
3.3.2 取消任务的延时89
3.3.3 获取和设置系统时间93
3.4 小结96
1. 中断服务子程序ISR:应中断请求而运行的程序。
中断向量:中断服务子程序的入口。
OSIntEnter( ):进入中断函数,作用是OSIntNesting++,即中断嵌套层数计数器加1.
OSIntExit( ):退出中断服务函数,作用是OSIntNesting--,即中断嵌套层数计数器减1.
2. OSIntCtxSw( ):中断级任务切换函数。汇编语言编写。
3. 临界段:不受任何干扰能连续运行的代码段。
OS_CRITICAL_METHOD=3
OS_ENTER_CRITICAL( ) //开中断
OS_EXIT_CRITICAL( ) //关中断
4. 时钟节拍(Time Tick):最小时钟单位,即两次中断之间间隔的时间。
OSTickISR():时钟节拍的中断服务程序,用汇编语言写的。调用OSTimeTick( )进行节拍处理。
OSTimeTick( ):时钟节拍服务函数,系统调用的函数。做了两件事:一是给计数器OSTime++,记录节拍数;二是遍历任务控制块链表中的所有任务控制块,了解每个任务的延时状态,使其中已经到了延时时限的非挂起任务进入就绪状态。
OSTimeTickHook( ):时钟节拍服务函数的钩子函数。在系统调用函数中书写自己的代码。
5. 任务的延时
void OSTimeDly(INT16U ticks):以节拍数为单位延时时间。其中,取消当前任务的就绪状态,延时节拍数存入任务控制块OSTCBCur->OSTCBDly=ticks,调用调度函数OS_Sched( )。
INT8U OSTimeDlyResume(INT8U prio):取消任务的延时。
6. OSTime:记录系统发生的时钟节拍数。在OSStart( )被初始化为0. INT8U OSTimeGet(void)可获得OSTime值。
文章评论(0条评论)
登录后参与讨论