代码拉取完成,页面将自动刷新
同步操作将从 jiaqiang.Li/stm32-task-timer-event 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ifndef _OS_TASK_EVENT_H_
#define _OS_TASK_EVENT_H_
#include "stm32l4xx_hal.h"
// 组件任务事件组队列大小
#define TASK_EVENT_SIZE (EVENT_MAX)
// 任务ID异常
#define TASK_EVENT_ID_ERR (0xFF)
// 任务ID已分配最大
#define TASK_EVENT_ID_MAX (TASK_EVENT_SIZE)
// 任务回调数组最大大小
#define TASK_EVENT_CALLBACK_SIZE (5)
// 任务回调数组异常
#define TASK_EVENT_CALLBACK_ID_ERR (TASK_EVENT_CALLBACK_SIZE)
// 任务事件状态
enum os_event_state {
// 默认值
EVENT_STATUS_INIT,
// 取消订阅
EVENT_STATUS_UNSUBSCRIBED,
// 已订阅
EVENT_STATUS_SUBSCRIBED,
// 已发布
EVENT_STATUS_PUBLISH,
// 事件正在执行
EVENT_STATUS_EXECUTE
};
// 任务事件结果
enum os_event_result {
// 错误
RESULT_ERR,
// 正常
RESULT_OK,
// 事件数量已分配最大
RESULT_EVENT_MAXIMUM,
// 事件回调函数为空
RESULT_EVENT_CALLBACK_FUNC_NULL,
// 事件回调函数没找到
RESULT_EVENT_CALLBACK_NOT_FOUND,
// 事件回调函数个数已分配最大
RESULT_EVENT_CALLBACK_MAXIMUM,
// 事件回调函数重复赋值
RESULT_EVENT_CALLBACK_REPEAT,
// 事件ID错误
RESULT_EVENT_ID_ERR,
// 事件ID没找到
RESULT_EVENT_ID_NOT_SUBSCRIBED
};
// 任务事件
enum os_task_event {
// 无事件
EVENT_NONE
// 数据准备完成
EVENT_COLLECT_FINISH,
// 算法分析完成
EVENT_ALG_ANALYSIS_FINISH,
// 以下事件在高功耗任务期间不执行,直到进入低功耗任务再执行
// 接收到串口HART数据
EVENT_UART_HART,
EVENT_MAX
};
// 事件过滤器
enum os_event_filter {
// 禁用事件过滤
EVENT_FILTER_DISABLE,
// 启用事件过滤
EVENT_FILTER_ENABLE
};
// 任务事件属性
typedef int8_t (*task_event_func_t)(uint8_t *param_8u, uint16_t *param_16u);
// 任务事件属性结构体
struct os_event_attr {
// 任务事件ID
enum os_task_event event_id;
// 任务状态
uint8_t event_status;
// 回调函数个数
uint8_t event_callback_count;
// 任务参数
uint8_t *param_8u;
// 任务参数
uint16_t *param_16u;
// 回调函数列表
task_event_func_t event_callbacks[TASK_EVENT_CALLBACK_SIZE];
};
// 事件管理器结构体
struct os_event_manager {
// 事件数量
uint8_t event_count;
// 发布事件数量
uint8_t event_publish_count;
// 事件过滤器
enum os_event_filter event_filter_enable;
// 事件组组
struct os_event_attr events[TASK_EVENT_SIZE];
};
// 事件使用计数
uint8_t event_used_count(void);
// 订阅任务事件
enum os_event_result task_event_subscribe(enum os_task_event event_id, task_event_func_t callback_func);
// 发布任务事件
enum os_event_result task_event_publish(enum os_task_event event_id, uint8_t *param_8u, uint16_t *param_16u);
// 取消订阅
enum os_event_result task_event_unsubscribe(enum os_task_event event_id, task_event_func_t callback_func);
// 触发循环
void task_event_trigger_loop(void);
// 启用事件过滤
void task_event_filter_enable(enum os_event_filter filter);
// 事件管理器结构体
extern struct os_event_manager os_event;
#endif // _OS_TASK_EVENT_H_
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。