任务管理(一)

来源:互联网 发布:超级球星的体测数据 编辑:程序博客网 时间:2024/06/05 16:23

1.滴答定时器:在STM32中SysTick就是用于产生系统时基的,SysTick有4个控制寄存器,如下表

                          

SysTick是STM32的硬件的一部分。只是运用RTOS的时候利用它来产生RTOS使用的另外的时钟基准。

用 OSTimeDlyHMSM ();和OSTimeDly();函数来实现系统延时,OSTimeDlyHMSM ()函数可以直接设置时分秒来实现想要的延时,但是OSTimeDly();函数需要通过计算来实现想要的延时,Tick时基X设置的tick数。在调用延时函数的时候OS会调用任务切换函数进行任务切换。

2.在UCOSIII系统中,使用中断函数时与不使用UCOSIII时的区别只是在中断函数体中,需要用到中断保护函数OSIntEnter(); 和OSIntExit();


3.UCOSIII中的任务由三部分组成:任务堆栈,任务控制块和任务函数。

    A.任务堆栈:上下文切换的时候用来保存任务的工作环境,即STM32的内部寄存器值。

    B.任务控制块:用来记录任务的各个属性。

    C.任务函数:由用户编写的任务处理函数,即实实在在干活的。任务一般是一个无限循环,但是有的不是无限循环,比如有的任务只需要执行一次,所有就不用无限循环(StartTask()函数)。

4.UCOSIII系统默认有5个系统任务:

   A.空闲任务:UCOSIII创建的第一个任务,UCOSIII必须创建的任务,由UCOSIII自动创建,不需要用户手动创建

   B.时钟节拍任务:此任务也是必须创建的任务。

   C.统计任务:可选任务,用来统计CPU使用率和各个任务的堆栈使用量。此任务是可选任务,由宏控制是否使用

   D.定时任务:用来向用户提供定时服务,可选任务。

   E.中断服务管理任务:可选任务。

5.UCOSIII任务状态:

   A.休眠态:任务已经在CPU的flash中,但是还不受UCOSIII管理。

   B.就绪态:系统为任务分配了任务控制块,并且任务已经就绪表中登记,这时这个任务就具有了运行条件

   C.运行态:任务获得CPU的使用权,正在运行

   D.等待态:正在运行的任务需要等待一段时间,或者等待某个时间,这个任务就进入了等待态,此时系统就会把CPU的使用权转交给别的任务。

   E.中断服务态:当发生中断时,当前正在运行的任务会被挂起,CPU转而去执行中断服务函数,此时任务的任务状态叫做中断服务态。

6.任务转换图:

                                             


地址

 





0 0
原创粉丝点击