#define LINK_LIST_SIZE (19) //STM32F103RT6 SRAM 96K字节
32 rec_cnt = 0; //已用缓冲区内容总数<=LINK_LIST_SIZE
static u8 tx_index = 0; //当前可发送的缓冲区下标
static u8 rx_index = 0; //当前可写入的缓冲区下标
static u8 buf[LINK_LIST_SIZE][4096] = {0}; //VS1053接收缓冲区
/***********************************************************************************
函数名称:get_idle_buf
函数功能:获取空闲缓冲区的下标(索引)
函数参数:
函数返回:返回下一个可用于接收的缓冲区下标(索引),如果返回0xFF说明无空闲缓冲区
************************************************************************************/
static u8 get_idle_buf(void)
{
u8 index = 0;
if(rec_cnt < LINK_LIST_SIZE){
index = rx_index;
rx_index = buf_index_calculate(rx_index);
return index;
}else{
return 0xFF;
}
}
/***********************************************************************************
函数名称:get_tx_buf_index
函数功能:获取可发送的缓冲区下标(索引)
函数参数:void
函数返回:0xff,表示没有需要发送的缓冲区,>=0,表示可发送的缓冲区下标(索引)
************************************************************************************/
u8 get_tx_buf_index(void)
{
u8 index = 0;
if(rec_cnt > 0){
index = tx_index;
rec_cnt--;
tx_index = buf_index_calculate(tx_index);
return index;
}else{
return 0xFF;
}
}
//保存满一个缓存时,rec_cnt要进行自加操作。