fifo 支持水位监测和溢出次数统计

This commit is contained in:
2026-07-20 10:53:37 +08:00
parent 065420db36
commit 6d57f4f1ce
3 changed files with 26 additions and 3 deletions
+12 -2
View File
@@ -9,18 +9,28 @@
// 在尾部写入数据
os_err_t fifo_put(fifo_t* self, uint8_t data){
os_size_t write_idx = self->write_idx;
os_size_t next_write_idx = fifo_next(self, self->write_idx);
if(next_write_idx == self->read_idx){
#if defined(OS_CFG_FIFO_DEBUG_ENABLE) && (OS_CFG_FIFO_DEBUG_ENABLE==1)
self->overflow_count++;
#endif
return OS_ERR_FULL;
}
self->buffer[write_idx] = data;
self->write_idx = next_write_idx;
#if defined(OS_CFG_FIFO_DEBUG_ENABLE) && (OS_CFG_FIFO_DEBUG_ENABLE==1)
os_size_t used = fifo_count(self);
if (used > self->high_water) {
self->high_water = used;
}
#endif
return OS_ERR_OK;
}
+10
View File
@@ -13,7 +13,12 @@
#include <os_macros.h>
#endif /*INCLUDED_OS_MACROS_H*/
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
#ifndef OS_CFG_FIFO_DEBUG_ENABLE
#define OS_CFG_FIFO_DEBUG_ENABLE 1
#endif
/* ==================================================================================================== */
/* 类型 */
@@ -24,6 +29,11 @@ typedef struct fifo_t{
os_size_t buffer_size;
volatile os_size_t write_idx;
volatile os_size_t read_idx;
#if defined(OS_CFG_FIFO_DEBUG_ENABLE) && (OS_CFG_FIFO_DEBUG_ENABLE==1)
volatile os_size_t high_water; /* 顶峰时期使用的字节数 */
volatile os_size_t overflow_count; /* 请求遇到溢出的次数 */
#endif
}fifo_t;
#define FIFO_INVALID_POS ((os_size_t)(-1u))
+4 -1
View File
@@ -22,7 +22,7 @@
#cmakedefine OS_CFG_CPU_FPU_PRESENT @OS_CFG_CPU_FPU_PRESENT@
#cmakedefine OS_CFG_CPU_MPU_PRESENT @OS_CFG_CPU_MPU_PRESENT@
#cmakedefine OS_CFG_FIFO_DEBUG_ENABLE @OS_CFG_FIFO_DEBUG_ENABLE@
/* ==================================================================================================== */
/* DEFAULT */
@@ -71,5 +71,8 @@
#define OS_CFG_CPU_MPU_PRESENT 0
#endif /* OS_CFG_CPU_MPU_PRESENT */
#ifndef OS_CFG_FIFO_DEBUG_ENABLE
#define OS_CFG_FIFO_DEBUG_ENABLE 0
#endif /* OS_CFG_FIFO_DEBUG_ENABLE */
#endif /*INCLUDED_OS_CONFIG_H*/