下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

软件定时器
[关于软件定时器的更多信息…… ]

配置应用程序以使用软件定时器

如果要在应用程序中使用 FreeRTOS软件定时器 API 仅需:
  1. 将FreeRTOS/Source/timers.c 源文件添加到您的项目中,以及

  2. 在应用程序 FreeRTOSConfig.h 头文件中定义下表详述的常量。

常量
说明
configUSE_TIMERS 设置为 1 以包括定时器功能。 当 configUSE_TIMERS 设置 1 时, 随着 RTOS 调度器的启动, 将自动创建定时器服务任务。
configTIMER_TASK_PRIORITY 设置定时器服务任务的优先级。 和所有任务一样, 定时器服务任务可以在 0 和 (configMAX_priority - 1 ) 之间运行任何优先级。

需要仔细选择此数值,以满足 应用程序的要求。 例如,如果定时器服务任务 成为系统中最高优先级任务,那么 那么发送到定时器服务任务的命令(当调用定时器 API 函数时) 和过期定时器都均会立即得到处理。 反之, 如果定时器服务任务被赋予低优先级, 则发送到定时器服务任务和过期的定时器的命令均不会被处理 直到所述定时器服务任务是 能够运行的最高优先级任务为止。 但值得注意的是 定时器到期时间是相对于发送命令的时间而计算, 而非相对于处理命令的时间进行计算。

configTIMER_QUEUE_LENGTH 这设置了定时器命令队列在 在任何时间均可以保存的未处理命令的最大数量。

定时器命令队列可能已满的原因包括:

  • 在启动 RTOS 调度程序之前 进行多次定时器 API 函数调用。
  • 中断服务例程 (ISR) 进行多个(中断安全) 定时器 API 函数调用。
  • 从优先级高于定时器服务任务的任务 调用多个定时器 API 函数。
configTIMER_TASK_STACK_DEPTH 设置分配给定时器服务任务的堆栈大小 (以字为单位,而不是以字节为单位)。

定时器回调函数在定时器上下文中执行 服务任务。 因此,定时器服务任务的堆栈要求 取决于定时器回调 函数。





Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.