三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

软件定时器03

软件定时器03

定时器:从指定时刻开始,经过一个指定时间,触发一个超时事件,用户可自定义定时器周期

硬件定时器:芯片本身自带的定时器模块,硬件定时器的精度很高,每次时间到达之后会自动触发一个中断,用户在中断服务函数中处理信息

软件定时器

简介:

  • 定义:具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数

  • 优劣势: 优势:硬件定时器资源有限,软件定时器只要内存足够,可N多个 劣势:精度相对于硬件定时器低

  • 任务状态: 休眠态:超时回调函数不会按时执行 运行态:超时回调函数按时执行 状态转换 初始休眠态:xTimerCreate 休眠态转运行态:xTimerStart xTimerReset xTimerChangePeriod 运行态转休眠态:xTimerStop / 单次定时器执行完一次超时回调函数后

  • 工作模式 单次定时器:超时回调函数只会被执行一次 周期定时器:超时回调函数按周期循环执行

软件定时器任务:

  • 作用: 负责软件定时器超时逻辑判断 负责调用软件定时器超时回调函数 负责处理软件定时器命令队列(应用程序(xTimerStart)->命令队列->软件定时器任务)

  • 相关配置 prvTimerTask 优先级:31 命令队列长度:5

  • 流程 创建软件定时器实现软件定时器回调函数 软件定时器回调函数由软件定时器任务统一调用 软件定时器任务由vTaskStartScheduler函数内创建 --> 软件定时器回调函数内不可阻塞,会影响其他软件定时器回调函数按时执行 --> 定时器api函数负责投递命令 到软件定时器执行队列软件定时器任务取出串行执行

软件定时器创建函数:

  • 函数:xTimerCreate

  • 入参:软件定时器名字 定时周期 工作模式 ID 回调函数

  • 返回值:失败:NULL 成功:软件定时器句柄 [注意]: 定时周期单位:tick ID用于多个软件定时器共用一个超时回调函数区分

软件定时器启动函数:

  • 函数:xTimerStart

  • 入参:软件定时器任务句柄 发送命令队列阻塞时间

  • 返回值:BaseType_t

软件定时器复位函数:

  • 函数:xTimerReset

  • 入参:软件定时器任务句柄 发送命令队列阻塞时间

  • 返回值:BaseType_t

软件定时器停止函数:

  • 函数:xTimerStop

  • 入参:软件定时器任务句柄 发送命令队列阻塞时间

  • 返回值:BaseType_t

软件定时器修改周期函数:

  • 函数:xTimerChangePeriod

  • 入参:软件定时器任务句柄 修改周期值 发送命令队列阻塞时间

  • 返回值:BaseType_t

软件定时器超时回调函数:void timer2_callback(TimerHandle_t pxTimer);

← 返回列表