把这段代码改为先进先出改为先进先出int buffer_enqueue(uint8_t item) { if (!buffer_is_full()) { CharBuff[tail++] = item; tail %= UART_DMA_BUFF_LEN_MAX; return 1; } else { uart_disable(); // Disable UART when the buffer is full return 0; } } // Dequeue a character from the buffer int buffer_dequeue(uint8_t *item) { if (!buffer_is_empty()) { *item = CharBuff[head++]; head %= UART_DMA_BUFF_LEN_MAX; return 1; } else { return 0; } }
时间: 2024-03-15 14:43:18 浏览: 54
FIFO.rar_fifo_fifo procedure_先进先出_先进先出程序_存储器
这段代码的作用是实现一个先进先出(FIFO)缓冲区,用于存储 UART 接收到的字节数据。具体来说,buffer_enqueue() 函数将一个字节添加到缓冲区的末尾,tail 指针指向下一个可写位置,如果缓冲区已满,则禁用 UART,并返回 0;buffer_dequeue() 函数从缓冲区的前端取出一个字节,并将其存储到指定的 item 变量中,head 指针指向下一个可读位置,如果缓冲区为空,则返回 0。这样,应用程序可以从缓冲区中读取数据,而不必担心数据的顺序。
阅读全文