1. 概述
操作系统需要有一个系统的滴答来提供任务管理的时间依据,bcos中的任务延时及tasklet的定时都是依据系统滴答。系统滴答需要一个定时器来提供时间基准,几乎所有的CPU都会提供一个滴答定时器(SYSTICK)来提供给操作系统使用。我们现在使用的STM32也不例外,下面我们就来看看bcos是如何利用Systick定时器实现系统滴答的。
2. Systick定时器
几乎所有的处理器都会提供一个硬件的Systick定时器用来实现操作系统的滴答计时。下面我们以STM32的Systick为例做简单的介绍。
STM32的Systick定时器是一个24位的向下定时计数器,SysTick 设定初值并使能后,每经过 1 个系统时钟周期,计数值就减 1。计数到 0 时,SysTick 计数器自动重装初值并继续计数,同时内部的 COUNTFLAG 标志会置位,触发中断 (如果中断使能情况下)。

一般ARM Cortex-M的CMSIS中已经提供了启动Systic的接口(SysTick_Config),用户只要调用该接口就可以设置Systick的reload值并启动计数。启动Systick后每次S
本文介绍了STM32的Systick定时器如何作为系统滴答为操作系统提供时间基准,用于任务管理和延时。Systick是24位向下计数器,当计数到0时,会重装初值并触发中断。bcos通过设置Systick为1ms周期,利用中断处理函数管理任务,包括检查超时任务并进行任务切换。系统任务延时以滴答数计时,通过设置任务超时时间戳实现任务调度。
订阅专栏 解锁全文
1721

被折叠的 条评论
为什么被折叠?



