定时器:从指定时刻开始,经过一个指定时间,触发一个超时事件,用户可自定义定时器周期
硬件定时器:芯片本身自带的定时器模块,硬件定时器的精度很高,每次时间到达之后会自动触发一个中断,用户在中断服务函数中处理信息
软件定时器
简介:
定义:具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数
优劣势: 优势:硬件定时器资源有限,软件定时器只要内存足够,可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);