Stm32采用环形缓冲区接收rk3588的数据代码

描述

```c
#include "stm32f10x.h"
#include "usart.h"
#include "ring_buffer.h"

#define BUFFER_SIZE 128

uint8_t buffer[BUFFER_SIZE]; // 定义一个大小为128的缓冲区
ring_buffer_t ring_buffer; // 定义一个环形缓冲区结构体

void USART1_IRQHandler(void)
{
   if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // 判断是否接收到数据
   {
       uint8_t data = USART_ReceiveData(USART1); // 读取接收到的数据
       ring_buffer_push(&ring_buffer, data); // 将数据压入环形缓冲区
   }
}

int main(void)
{
   SystemInit(); // 系统初始化
   USART1_Config(); // 配置USART1
   ring_buffer_init(&ring_buffer, buffer, BUFFER_SIZE); // 初始化环形缓冲区

   while (1)
   {
       if (!ring_buffer_is_empty(&ring_buffer)) // 判断环形缓冲区是否为空
       {
           uint8_t data = ring_buffer_pop(&ring_buffer); // 从环形缓冲区中取出数据
           // 处理接收到的数据
       }
   }
}
```

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分