[应用相关] 串口环形缓冲区学习

[复制链接]
580|2
 楼主| 八层楼 发表于 2020-8-5 17:45 | 显示全部楼层 |阅读模式
环形缓冲区作用

串口数据接收, 如果数据量过大, 很可能来不及处理这些数据, 因此需要把接收的数据存放到一个位置缓存, 待空闲时间处理, 防止接收的数据丢失; 环形缓冲区越大, 那么可以缓存的数据就越多, 这样就是以空间换时间的做法.

编程步骤
  • UART初始化, 打开串口发送和接收;
  • UART中断优先级配置NVIC;
  • 环形缓冲区定义
  • 环形缓冲区数据接收: 在串口中断中读取收到的数据到环形缓冲;
  • 环形缓冲区数据发送: 在主程序中把环形缓冲区的数据发送给串口;

 楼主| 八层楼 发表于 2020-8-5 17:46 | 显示全部楼层
本帖最后由 八层楼 于 2020-8-5 17:48 编辑

代码&分析

#define RINGBUFF_LEN    200     //定义最大接收字节数
#define FLASE   1
#define TRUE    0


205965f2a800bae02d.png

597425f2a8019c5f8c.png
404165f2a80231c581.png
605885f2a802e779db.png 728155f2a8073764bc.png


 楼主| 八层楼 发表于 2020-8-5 17:47 | 显示全部楼层
实验现象

如果单次发送的数据大于环形缓冲区的大小, 还是会有丢数据的可能;
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NvdzgyNQ==,size_16,color_FFFFFF,t_70.jpg


您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

4426

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部