延时中断运行并不友好中断中断信息以生产者的方式存在, 由rtos.receive作为消费者消息体以4字节对齐的方式存在
struct RtosMsg {
uint32_t msgtype;
uint32_t msgdata;
} rtos_msg;
#define LUAT_MSGBUS_ITEMCOUNT ((size_t)0xFF)
其中
使用CMSIS_OS_v2的 Queue API进行操作, put和get操作
uint32_t luat_msgbus_put(rtos_msg* msg, size_t timeout);
uint32_t luat_msgbus_get(rtos_msg* msg, size_t timeout);
uint32_t luat_msgbus_freesize(void);
下列API用于debug, 不一定实现, 本模块暂不提供用户Lua API
-- 获取剩余当前队列的长度
rtos.msgbus_current_size() -- 返回数值
-- 获取队列里面的全部消息,有可能为空队列
rtos.msgbus_list() -- 返回 [[msgtype, msgdata], ...]
-- 清空队列
rtos.msgbus_clear() -- 无返回
-- 放入一个消息
rtos.msgbuf_send(msgtype, msgdata) -- 无返回
| 消息类型 | 消息数据 | 备注 |
|---|---|---|
| MSG_TIMER | FUNC | 定时器 |
| MSG_UART_RXDATA | UART_ID, LEN | 串口接收 |
| MSG_UART_TX_DONE | UART_ID | 串口发送完成 |
| MSG_INT | GPIO_ID,INT | GPIO中断 |