代码拉取完成,页面将自动刷新
同步操作将从 jiaqiang.Li/stm32-task-timer-event 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ifndef __OS_TASK_TIMER_H__
#define __OS_TASK_TIMER_H__
#include "stm32l4xx_hal.h"
// 定义任务队列大小
#define TASK_TIMER_SIZE (10)
// 定义任务ID
#define TASK_TIMER_ID_MAX
// 定义任务事件单位,默认时间和系统tick保持一致
#define TASK_TICK_INTERVAL (1)
// 定义任务定时器类型
typedef void (*func_t)(uint8_t *param_in);
// 定义任务定时器类型枚举
enum task_timer_type {
TASK_TIMER_TYPE_PERIOD, // 周期性定时器
TASK_TIMER_TYPE_ONE_TIME, // 单次定时器
TASK_TIMER_TYPE_MAX,
};
// 定义任务定时器结果枚举
enum os_task_timer_result {
STATUS_ERR, // 错误
STATUS_OK, // 正常
STATUS_TASK_MAXIMUM, // 任务数量超过最大值
STATUS_TASK_FUNC_NULL, // 运行函数体为空
STATUS_TASK_ID_ERR, // 任务ID错误
STATUS_TASK_DELETED_RESUME, // 删除正在运行任务
STATUS_MAX,
};
// 定义任务标志位枚举
enum os_task_flag {
TASK_FLAG_INIT, // 默认值
TASK_FLAG_READY, // 任务就绪
TASK_FLAG_SUSPEND, // 任务挂起
TASK_FLAG_EXECUTE, // 任务执行
TASK_FLAG_EXIT, // 任务退出
TASK_FLAG_MAX,
};
// 定义定时器超时状态枚举
enum os_tasktimeout {
TIMER_NOT_OVERTIME, // 定时器未超时
TIMER_OVERTIME, // 定时器超时
};
// 定义任务属性结构体
struct os_task_attr {
uint8_t task_id; // 任务id,用于退出任务
enum os_task_flag task_flag; // 任务标记
enum task_timer_type timer_type; // 定时器类型
enum os_task_timer_result task_result; // 任务状态
uint8_t *params; // 任务参数
int32_t timeout; // 任务超时,非周期任务置0
int32_t timeout_reload; // 任务超时重新加载值
enum os_task_timeout overtime; // 定时器超时
task_func_t task_enter_func; // 任务函数入口
task_func_t task_callback_func; // 任务函数回调
};
// 获取已使用任务数
uint8_t os_task_used_count(void);
// 创建任务
struct os_task_attr *os_task_create(struct os_task_attr *task_attr, uint8_t priority);
// 删除任务
enum os_task_timer_result os_task_deleted(uint8_t task_id);
// 执行任务
void task_timer_execute(uint8_t index);
// 更新任务超时
void os_task_timeout_update(void);
// 设置任务超时
void os_task_timer_timeout_set(uint8_t index, int32_t timeout);
// 恢复任务
void os_task_timer_resume(uint8_t id);
// 挂起任务
void os_task_timer_suspend(uint8_t id);
#endif // _OS_TASK_TIMER_H_
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。