BLE学习(3)
介绍
上一篇主要介绍CH57x BLElib包的内容,这一篇将从TMOS开始介绍。
任务管理系统(TMOS)
概述
低功耗蓝牙协议栈以及应用均基于 TMOS(Task Management Operating System),TMOS
是一个控制循环,通过 TMOS 可设置事件的执行方式。对于一个任务,独一无二的任务 ID,
任务的初始化以及任务下可执行的事件都是不可或缺的。
TMOS特点
1)TMOS 实际上就是OSAL的简化版本,这是一个轮询实现的系统,不支持抢占任务;
2)TMOS 系统时钟单位为 625us, 时钟来源为RTC
3)多任务管理方式实际上只有一个任务在运行
4)可以使用任务调度的策略将多个任务进行调度,每个任务占用一定的时间,所有的任务通过时间分片的方式处理。
任务初始化
初始化任务需要调用 tmosTaskID=TMOS_ProcessEventRegister(pTaskEventHandlerFn eventCb)
函数,将事件的回调函数注册到 TMOS 中,并生成唯一的 8 位任务 ID。不同的任务初始化后任务 ID 依次递增,而任务 ID 越小任务优先级最高。协议栈任务必须具有最高的优先级。
halTaskID =TMOS_ProcessEventRegister(HAL_ProcessEvent );
任务事件及事件的执行
在任务初始化完成之后,TMOS 就会在循环中轮询任务事件,事件的标志存储在 16 位变量中,其中每一位在同一任务中对应一个唯一的事件。需要注意的是(0x8000)不可被定义,因为其对应的是 SYS_EVENT_MSG,即系统消息传递事件。
任务执行的基本结构如图所示,TMOS 根据任务的优先级轮询其是否有事件需要执 行,若有事件则执行相应的回调函数。当一个循环结束之后,若还有时间空余,系统会进入
空闲或睡眠模式。