Nordic 官方FIFO代码精髓

Nordic FIFO 官方代码的wr_index rd_index是uint32_t 类型的,在FIFO 中元素的大小FIFO_SIZE的必须是2的倍数。
其精髓在于以下三点:

1.执行wr_index 与 rd_index 自加操作时,当数值达到 FIFO_SIZE时,无需执行跳转至0。当rd_index == FIFO_SIZE时跳转至0的操作,不是原子操作。一般FIFO 在中断中写入数据,在主函数中读取数据。如果rd_index在等于 FIFO_SIZE时产生中断,在中断中使用rd_index会出现异常。
2.求取FIFO 长度时只需要计算 (wr_index - rd_index)& (FIFO_SIZE - 1),即可快速算出FIFO的大小。如果将计算长度拆分成多个步骤进行,可能在计算长度的步骤中wr_index 或rd_index发生变化导致长度计算异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值