原创 《嵌入式实时操作系统μC/OS-2原理及应用》(任哲编著)阅读札记(二)

2009-9-16 20:11 2832 3 3 分类: MCU/ 嵌入式

 


第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值。


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条