使用时钟源有一个特别需要注意的地方:用户必须在多任务系统扰粗启动以后再开启时钟节拍器,也就是在调用OSStart()之后。
ucos中的时钟节拍服务是通过在定时器中断服务子程序中调用OSTimeTick()实现的。
ucos要求提供定时中断,雹李薯以实现延时与超时控制等功能。这个定时中断就是时钟节拍,它应该发生10-100次每秒。
时钟节拍的频率源者越高,系统负荷越重。
定纳手时器仍在计数,并会产生中断,是否中袭唤断要看在你现在的中断优先级以及是否关闭了中断响应.
如果优先级比Systick中断高或关闭了中断响应,那么你的拍茄凯中断处理程序一定要耗时少,否则会影响Systick中断的执行时机,或产生两次中断了才执行一次.
时钟节拍类似于人体心脏的跳动,人体依赖心脏的跳动将血液输入身体各个部位,支撑生命活动。时钟节拍的是 *** 作系统的时基, *** 作系统依赖于时钟节拍推宴者动 CPU 去执行指令。
时钟节拍是系统以固定的频率产生中断(时基中断),并在中断处理与时间升告相关的事件,推动所有任务向前运行。时钟吵祥明节拍需要依赖于硬件定时器,STM32 通常使用 systick 时钟作为 MCU 的内核定时器。
根据系统时钟的初始化,在系统计数达到后,产生时钟中断,并调用中断处理函数 OS_CPU_SysTickHandler 。
在 OS_CPU_SysTickHandler 函数中调用了 UCOS 的时间片处理函数 OSTimeTick ,对系统的时间片进行处理。
在 OSTimeTick 函数中给时基任务、定时器任务都发送了信号量。这里先介绍时基任务。时基任务是在 OS 初始化函数 void OSInit (OS_ERR *p_err) 中创建。
本章阐述了时钟节拍的工作原理,看似微小却是整个 uC/OS 系统的命脉。时钟节拍的运行依赖于 CPU 的定时器, STM32 专门为此量身定制了 SysTick 时钟。每个时钟节拍到来时,时基任务就会执行,节拍任务的重点是更新节拍任务列表。在节拍列表中,存放的均是与时间事件(如延时或超时)相关的任务。如果任务到期,则需要更新响应的任务状态。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)