队列松耦合与RTOS API选择
1. 队列松耦合相关内容
1.1 帧解码
当数据从USB传入时,USB栈会将其放入流缓冲区。可以通过 Drivers/HandsOnRTOS/VirtualCommDriverMultiTask.c 中的 GetUsbRxStreamBuff() 函数访问传入数据的流缓冲区:
StreamBufferHandle_t const * GetUsbRxStreamBuff( void )
{
return &vcom_rxStream;
}
此函数返回一个指向 StreamBufferHandle_t 的常量指针,这样调用代码可以直接访问流缓冲区,但不能更改指针的值。
协议是一个严格的二进制流,以 0x02 开头,以小端字节序传输的CRC - 32校验和结尾。选择简单二进制流是为了简化操作,但这种帧处理方法非常僵化,缺乏灵活性。
frameDecoder 函数在 mainColorSelector.c 中定义:
void frameDecoder( void* NotUsed)
{
LedCmd incomingCmd;
#define FRAME_LEN 9
uint8_t frame[FRAME_LEN];
while(1)
{
超级会员免费看
订阅专栏 解锁全文

310

被折叠的 条评论
为什么被折叠?



