任务创建
创建系统任务,最多支持创建 3 个任务,优先级分别为 0/1/2
bool system_os_task(
os_task_t task,
uint8 prio,
os_event_t *queue,
uint8 qlen
)
- os_task_t task:任务函数
- uint8 prio:任务优先级,可为 0/1/2; 0 为最低优先级。这表示最多只⽀支持建立 3 个任务
- os_event_t *queue:消息队列列指针
- uint8 qlen:消息队列深度
- 返回值:true 成功 false 失败
常见任务示例
#include "mem.h"
#define SIG_RX 0
#define QUEUE_LEN 4
os_event_t *pQueue;
void ICACHE_FLASH_ATTR p_task(os_event_t *e)
{
switch (e->sig)
{
case SIG_RX:
os_printf("sig rx %c\n", (char)e->par);
break;
default:
break;
}
}
void ICACHE_FLASH_ATTR task_init(void)
{
pQueue = (os_event_t *)os_malloc(sizeof(os_event_t) * QUEUE_LEN);
system_os_task(p_task, USER_TASK_PRIO_0, pQueue, QUEUE_LEN);
system_os_post(USER_TASK_PRIO_0,SIG_RX,'a');
}
注意这里需要添加头文件mem.h,否则编译出错。
向任务发送消息
system_os_post
bool system_os_post (
uint8 prio,
os_signal_t sig,
os_param_t par
)
- uint8 prio:任务优先级,与建立时的任务优先级对应。
- os_signal_t sig:消息类型
- os_param_t par:消息参数
- 返回值:true 成功 false 失败
任务发送示例
void task_post(void) {
system_os_post(USER_TASK_PRIO_0, SIG_RX, ‘a’);
}