利用队列实现松耦合及FreeRTOS API选择
1. 利用队列实现松耦合
1.1 帧解码
当数据从USB传入时,USB栈会将其放入流缓冲区。可通过 Drivers/HandsOnRTOS/VirtualCommDriverMultiTask.c 中的 GetUsbRxStreamBuff() 函数访问传入数据的流缓冲区:
StreamBufferHandle_t const * GetUsbRxStreamBuff( void )
{
return &vcom_rxStream;
}
该协议是一个严格的二进制流,以 0x02 开头,以小端字节序传输的CRC - 32校验和结尾。选择简单二进制流进行数据序列化是为了简便,但这种帧处理方法非常死板,缺乏灵活性。
1.2 帧解码函数
frameDecoder 函数定义在 mainColorSelector.c 中:
void frameDecoder( void* NotUsed)
{
LedCmd incomingCmd;
#define FRAME_LEN 9
uint8_t frame[FRAME_LEN];
while(1)
{
memset(frame, 0, FRAME_LEN);
while(frame[0] != 0x
超级会员免费看
订阅专栏 解锁全文

310

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



