avatar

松果工作室

欢迎光临

  • 首页
  • freeRTOS
  • ESP
  • 开发手册
  • 快速笔记
  • 个人收藏
  • 工具
Home 软件定时器(Software Timer)
文章

软件定时器(Software Timer)

Posted 2023-12-7 Updated 2023-12- 7
By YCP
4~5 min read

使用流程

  • 创建定时器句柄
  • 启动定时器

注意事项

  • 启动定时器后,延时一个周期再执行定时器回调,不会立刻执行。因此,当定时器句柄中的 pdTure 改成 pdFalse,这就是个延时任务。
  • 延时任务执行一次之后,如果再次执行xTimerStart,会再次执行一次延时任务。

代码示例

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/timers.h"

void TimerCallback(TimerHandle_t xTimer)
{
    printf("周期定时器回调\r\n");
}

void app_main()
{
    TimerHandle_t xTimer = xTimerCreate(
        "MyTimer",           // 定时器名称
        pdMS_TO_TICKS(1000), // 定时器周期(以毫秒为单位)
        pdTRUE,              // 是否周期性触发
        NULL,                // 定时器ID(可选)
        TimerCallback        // 定时器回调函数
    );

    xTimerStart(xTimer, portMAX_DELAY);

    vTaskDelay(pdMS_TO_TICKS(1000));
    
    xTimerStop(xTimer, portMAX_DELAY); // 停止定时器
    xTimerDelete(xTimer, portMAX_DELAY); // 删除定时器
}
重学 freeRTOS
freeRTOS
License:  CC BY 4.0
Share

Further Reading

May 9, 2024

freeRTOS 高精度定时任务

vTaskDelayUntil()能精确地在每 50ms 调用这个函数 void TASKF(void *ptr) { TickType_t xLastWakeTime; xLastWakeTime = xTaskGetTickCount(); while (1) { vTask

Dec 8, 2023

事件组(Event Group)

使用流程 创建事件组句柄 定义事件组标志位 Task1:事件组标志位置 1 Task2:创建等待事件组事件;检测事件组标志位是否置 1 注意事项 待补充,纯属一个 Flag。 代码示例 #include <FreeRTOS.h> #include <task.h> #

Dec 7, 2023

软件定时器(Software Timer)

使用流程 创建定时器句柄 启动定时器 注意事项 启动定时器后,延时一个周期再执行定时器回调,不会立刻执行。因此,当定时器句柄中的 pdTure 改成 pdFalse,这就是个延时任务。 延时任务执行一次之后,如果再次执行xTimerStart,会再次执行一次延时任务。 代码示例 #include "

OLDER

类和对象

NEWER

事件组(Event Group)

Recently Updated

  • ESP32(八) 简单的webserver
  • ESP32(七) NVS
  • ESP32(四) STA & AP
  • 多级菜单
  • ESP32(五) ESP32 OTA

Trending Tags

WCH Linux Elec freeRTOS STM ESP Flutter Others SwiftUI

Contents

©2025 松果工作室. Some rights reserved.

Using the Halo theme Chirpy