在设备不可知的 RTOS 实现和特定的周期性定时器功能之间提供低级 API 。更多...
函数 | |
int32_t | OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) |
建立 OS Tick 。更多... | |
void | OS_Tick_Enable (void) |
启用 OS Tick 。更多... | |
void | OS_Tick_Disable (void) |
禁用 OS Tick 。更多... | |
void | OS_Tick_AcknowledgeIRQ (void) |
确认 OS Tick IRQ 。更多... | |
int32_t | OS_Tick_GetIRQn (void) |
获取 OS Tick IRQ 编号。更多... | |
uint32_t | OS_Tick_GetClock (void) |
获取 OS Tick 时钟。更多... | |
uint32_t | OS_Tick_GetInterval (void) |
获取 OS Tick 间隔。更多... | |
uint32_t | OS_Tick_GetCount (void) |
获取 OS Tick 计数值。更多... | |
uint32_t | OS_Tick_GetOverflow (void) |
获取 OS Tick 溢出状态。更多... | |
描述
CMSIS OS Tick API 可以被任意 RTOS 实现使用,以便在各种各样的控制器中轻松使用。
Cortex-M 器件共享一个通用系统节拍定时器,用于 RTOS 定时目的。Cortex-A 器件没有常见的系统节拍定时器,但是有各种供应商特定的解决方案。为了使 RTOS(如 RTX5)更容易支持多种 Cortex 微控制器,OS Tick API 用于封装设备特定的定时器实现。
Cortex-M 系统滴答定时器的默认实现可以在 os_systick.c 中找到。
-
注意
- 默认的实现被定义为弱,因此可以很容易地被替代的用户实现覆盖。
函数文档
int32_t OS_Tick_Setup | ( | uint32_t | freq, |
IRQHandler_t | handler | ||
) |
-
参数
-
[in] freq 滴答频率,单位为 Hz [in] handler 滴答 IRQ 处理程序
-
返回
- 成功时为 0 ,错误时为 -1 。
设置一个硬件时间,用于为 RTOS 产生周期性的滴答中断。
定时器应该配置为在给定频率下产生中断。给定的回调应该用作中断处理程序。
定时器只应该被初始化并相应地配置。在调用 OS_Tick_Enable 之前,它不能启动也不能创建中断。
对于使用内置 SystemTick 定时器的简单 Cortex-M 设备,默认实现如下例所示:
int32_t OS_Tick_Enable | ( | void | ) |
启动定时器来计数并启用周期性中断的生成。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示:
int32_t OS_Tick_Disable | ( | void | ) |
停止定时器计数并禁止生成周期性中断。
在调用这个函数之后,定时器不能产生任何进一步的中断。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示:
int32_t OS_Tick_AcknowledgeIRQ | ( | void | ) |
确认待处理的滴答中断,即通过清除挂起标志。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示:
int32_t OS_Tick_GetIRQn | ( | void | ) |
-
返回
- OS Tick IRQ 编号。
返回实际的数值来标识定时器使用的中断。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示:
uint32_t OS_Tick_GetClock | ( | void | ) |
-
返回
-
OS Tick 时钟,单位为 Hz 。
返回定时器工作的时钟频率,即给定内部计数器值的增量。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示:
uint32_t OS_Tick_GetInterval | ( | void | ) |
-
返回
- OS Tick 间隔。
将连续滴答中断之间的内部计数器值的实际计数间隔返回。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示:
uint32_t OS_Tick_GetCount | ( | void | ) |
-
返回
- OS Tick 计数值。
返回 0 到 OS_Tick_GetInterval() - 1 之间的内部计数器的当前值。
如果需要更高的时间分辨率,则使用此值计算子标记,即 OS_Tick_GetCount()/ OS_Tick_GetInterval()。
-
注意
- 如果硬件是一个递减计数器(例如 Cortex-M 系统节拍定时器),则必须计算相应的递增计数器值。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示:
OS_Tick_GetOverflow | ( | void | ) |
-
返回
- OS Tick 溢出状态(1 - 溢出,0 - 无溢出)。
返回溢出信号的当前状态,即定时器中断等待位。
这个信息可以用来计算一个中间的(但是正确的)滴答值,而滴答中断正在挂起但被阻塞。
对于使用内置 SystemTick 计时器的简单 Cortex-M 设备,默认实现如下例所示: