当前位置: 首页 > news >正文

FreeRTOS中的定时器:xTimerCreate ,xTimerStart ,xTimerStop

1. 创建定时器

定时器的创建使用 xTimerCreate 函数。该函数有以下参数:

  • pcTimerName:定时器的名字,主要用于调试。
  • xTimerPeriodInTicks:定时器的周期,以系统节拍计时。
  • uxAutoReload:定时器是否自动重载。如果为 pdTRUE,定时器将在到期后自动重启;如果为 pdFALSE,定时器将在到期后停止。
  • pvTimerID:一个用户定义的标识符,可以在回调函数中使用。
  • pxCallbackFunction:定时器到期时调用的回调函数。
TimerHandle_t xTimer;
xTimer = xTimerCreate("MyTimer",           // 定时器名字pdMS_TO_TICKS(1000), // 定时器周期,单位为毫秒pdTRUE,              // 自动重载( void * ) 0,        // 定时器标识符vTimerCallback       // 回调函数);if (xTimer == NULL) {// 创建定时器失败
} else {// 创建定时器成功
}

2. 开始定时器

定时器的启动使用 xTimerStart 函数。该函数有以下参数:

  • xTimer:定时器句柄。
  • xTicksToWait:如果队列已满,任务需要等待的节拍数。
if (xTimerStart(xTimer, 0) != pdPASS) {// 启动定时器失败
} else {// 启动定时器成功
}

3. 停止定时器

定时器的停止使用 xTimerStop 函数。该函数有以下参数:

  • xTimer:定时器句柄。
  • xTicksToWait:如果队列已满,任务需要等待的节拍数。
if (xTimerStop(xTimer, 0) != pdPASS) {// 停止定时器失败
} else {// 停止定时器成功
}

代码示例:

#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"void vTimerCallback(TimerHandle_t xTimer) {// 定时器回调函数printf("Timer expired!\n");
}void vTaskFunction(void *pvParameters) {TimerHandle_t xTimer;// 创建定时器xTimer = xTimerCreate("MyTimer",           // 定时器名字pdMS_TO_TICKS(1000), // 定时器周期,单位为毫秒pdTRUE,              // 自动重载( void * ) 0,        // 定时器标识符vTimerCallback       // 回调函数);if (xTimer == NULL) {// 创建定时器失败} else {// 创建定时器成功if (xTimerStart(xTimer, 0) != pdPASS) {// 启动定时器失败} else {// 启动定时器成功}}// 任务循环for (;;) {// 停止定时器(例如在某些条件下)if (/* some condition */) {if (xTimerStop(xTimer, 0) != pdPASS) {// 停止定时器失败} else {// 停止定时器成功}}vTaskDelay(pdMS_TO_TICKS(2000)); // 延时以模拟任务的其他操作}
}int main(void) {// 创建任务xTaskCreate(vTaskFunction, "Task", configMINIMAL_STACK_SIZE, NULL, 1, NULL);// 启动调度器vTaskStartScheduler();// 如果程序运行到这里,说明调度器启动失败for (;;);
}
http://www.lryc.cn/news/411275.html

相关文章:

  • 【网络安全】文件上传黑白名单及数组绕过技巧
  • 4.2、存储管理-页式存储
  • 60个常见的 Linux 指令
  • DockerRedis基础
  • oracle读写时相关字符集详解
  • OverlayFS 文件系统介绍
  • 【C++】用Lua绑定C/C++对象,实现对脚本调用(依赖LuaBridge实现)
  • Java面试——Tomcat
  • 2024年7月个人工作生活总结
  • 快速方便地下载huggingface的模型库和数据集
  • JAVA小白学习日记Day10
  • 分布式相关理论详解
  • Linux基础知识之Shell命令行及终端中的快捷键
  • 研究生选择学习Android开发的利与弊?
  • 怎么评价程序员40岁了竟然还在撸代码?
  • SQL优化(一)基础概念
  • 【C++高阶】哈希:全面剖析与深度学习
  • PHP西陆招聘求职系统小程序源码
  • 系统移植(十一)根文件系统(未整理)
  • mac中docker常用命令总结
  • Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 [ 项目介绍 ] [ 获取数据 ] [ 创建测试集 ]| 1/3(含分析过程)
  • Linux 4: Bash
  • 第十四天学习笔记2024.7.25
  • 花几千上万学习Java,真没必要!(三十七)
  • SSA-GRU(自适应平滑自回归门控循环单元)预测模型及其Python和MATLAB实现
  • 【ROS】让你的回调函数并行起来
  • M12电连接器的编码分类及应用领域分析
  • 基于YOLOv8的道路裂缝坑洼检测系统
  • 蓝鹏测径仪非标定制订制流程
  • vue基础3