当前位置: 代码迷 >> 单片机 >> M0内存储器溢出情况
  详细解决方案

M0内存储器溢出情况

热度:114   发布时间:2016-04-28 15:49:44.0
M0内存溢出情况
在一个中断函数中,调用GetInReport ()函数老是有问题(处理器运行不正常),我怀疑是内存溢出了,大家帮忙看看哪段代码出现这样的情况?为什么?(M0处理器,LPC11U12)
C/C++ code
uint8_t FIFO_Out(pFifoStruct pFifo,ElemType *sdat){    if((pFifo->front == pFifo->rear) && (pFifo->count == 0))    { // empty        #ifdef _FIFO__DEBUG_        SUartSendString("\r\nQueueEmpty", 12);        #endif        return 1;    }    else    { // out        *sdat = pFifo->dat[pFifo->front];        pFifo->front = (pFifo->front + 1) % QueueSize;        pFifo->count = pFifo->count - 1;        return 0;    }}uint8_t FIFO_Rollback(pFifoStruct pFifo,ElemType *sdat){    if((pFifo->front == pFifo->rear) && (pFifo->count == QueueSize))    {         #ifdef _FIFO__DEBUG_        SUartSendString("\r\nRollback_Full", 15);        #endif        return 1;    }    else    {        pFifo->front = (pFifo->front - 1) % QueueSize;        pFifo->count = pFifo->count + 1;        pFifo->dat[pFifo->front] = *sdat;        return 0;    }}void GetInReport (void){    uint8_t Index,i;    uint8_t Temp;    for(Index = 2;Index < 8; Index ++)    {        if(0 != FIFO_Out(&SoftFifo,&Temp))            {                goto Same_exit;            }        uSendBuf[Index] = Temp;        for(i = Index-1;i >= 2; i -- )        {            if(Temp == uSendBuf[i])            {                FIFO_Rollback(&SoftFifo,&Temp);                goto Same_exit;            }        }    }    return;Same_exit:    for(i = Index ; i < 8; i++)    {        uSendBuf[i] = 0;    }    return;}


------解决方案--------------------
最好能看到是运行到哪一行挂掉的

GetInReport函数中的几个数组长度你仔细检查下
------解决方案--------------------
,调用GetInReport ()函数老是有问题(处理器运行不正常),
------------

具体是什么问题