소스 검색

增加循环队列接收数据宽度

xuxinyi 1 개월 전
부모
커밋
a0ff65abc1
3개의 변경된 파일5개의 추가작업 그리고 5개의 파일을 삭제
  1. 2 2
      Core/Inc/ring_buffer.h
  2. 2 2
      Core/Src/ring_buffer.c
  3. 1 1
      Core/Src/stm32f1xx_it.c

+ 2 - 2
Core/Inc/ring_buffer.h

@@ -10,10 +10,10 @@
 #include "string.h"
 
 #define QUEUE_SIZE 30   // 队列大小,可以根据需求调整
-#define BL_DATA_SIZE 8   //存储一组蓝牙数据
+#define DATA_SIZE 12   //存储一组数据
 
 typedef struct {
-    uint8_t buffer[QUEUE_SIZE][BL_DATA_SIZE];
+    uint8_t buffer[QUEUE_SIZE][DATA_SIZE];
     volatile uint16_t head;  // 读指针
     volatile uint16_t tail;  // 写指针
 } RingBuffer;

+ 2 - 2
Core/Src/ring_buffer.c

@@ -22,7 +22,7 @@ int RingBuffer_Enqueue(RingBuffer *q, const uint8_t *data) {
         return -1;  // 队列已满
     }
     // q->buffer[q->tail] = data;
-    memcpy(q->buffer[q->tail], data, BL_DATA_SIZE);
+    memcpy(q->buffer[q->tail], data, DATA_SIZE);
     q->tail = (q->tail + 1) % QUEUE_SIZE;
     return 0;
 }
@@ -32,7 +32,7 @@ int RingBuffer_Dequeue(RingBuffer *q, uint8_t *data) {
         return -1;  // 队列为空·
     }
     // *data = q->buffer[q->head];
-    memcpy(data,q->buffer[q->head], BL_DATA_SIZE);
+    memcpy(data,q->buffer[q->head], DATA_SIZE);
     q->head = (q->head + 1) % QUEUE_SIZE;
     return 0;
 }

+ 1 - 1
Core/Src/stm32f1xx_it.c

@@ -350,7 +350,7 @@ void USART3_IRQHandler(void)
       if (deviceInfo.BlDataFlag == BL_START) {
         // 检查队列是否已满
         if (RingBuffer_IsFull(&deviceInfo.queueBLData)) {
-          uint8_t temp[BL_DATA_SIZE];
+          uint8_t temp[DATA_SIZE];
           // 先出队一个数据腾出空间
           if (RingBuffer_Dequeue(&deviceInfo.queueBLData, temp) == 0) {
             // 可选:打印或处理被删除的数据