一、关于串口以队列方式接收数据应用笔记。

对串口以队列方式进行接收数据时的使用分析笔记
摘要由CSDN通过智能技术生成

一、关于队列文件的处理如下
头文件

#ifndef _FIFO_H_
#define _FIFO_H_


typedef struct fifo_t {
   
    uint8_t *buf;//缓存区
	uint32_t size;//队列大小
	uint32_t in;//入读计数
	uint32_t out;//出队计数
} _fifo_str;

#define min(x,y) ((x) < (y)?(x):(y))

int FifoInit(uint8_t *fifo_addr, uint32_t fifo_size);//初始化

int FifoDataLen(void);//获取当前时刻里队列的数据长度

int FifoSpaceLen(void);//获取队列剩余空间长度

int FifoRead(uint8_t *buf, uint32_t len);//读队列数据

int FifoWrite(
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 初始化循环队列:在程序启动时,需要先初始化一个循环队列,用于存储串口接收到的数据。循环队列需要定义一个缓冲区大小,以及一个队头和队尾指针,初始时队头和队尾指针都指向缓冲区的起始位置。 2. 配置串口:在程序启动时,需要配置串口的波特率、数据位、停止位和校验位等参数,并开启串口接收中断。 3. 中断服务函数:当串口接收到数据时,会触发串口接收中断,此时会执行中断服务函数。中断服务函数需要将接收到的数据存储到循环队列中,并更新队尾指针。 4. 数据处理函数:在程序中需要定义一个数据处理函数,用于处理从循环队列中取出的数据。数据处理函数需要从循环队列中取出数据,并根据数据的格式进行解析和处理。 5. 循环队列操作函数:程序中还需要定义一些循环队列操作函数,如判断循环队列是否为空,判断循环队列是否已满,获取循环队列中的数据等。 6. 主程序循环:在主程序循环中,不断检查循环队列中是否有新的数据,如果有则调用数据处理函数进行处理。如果循环队列为空,则可以等待一段时间后再次检查。 7. 程序结束:在程序结束时,需要关闭串口,并释放循环队列所占用的内存空间。 总之,基于循环队列基于中断方式接收串口数据,需要注意串口配置和中断服务函数的实现。通过循环队列使用,可以方便地存储和处理串口接收到的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值