操作指针,向SDRAM地址写值问题

2019-07-20 03:55发布

外部SDRAM地址为0XC0000000 ,16位, 用如下方式读写均正常
void FMC_SDRAM_WriteBuffer(u8 *pBuffer,u32 WriteAddr,u32 n)
{
for(;n!=0;n--)
{
  *(vu8*)(Bank5_SDRAM_ADDR+WriteAddr)=*pBuffer;
  WriteAddr++;
  pBuffer++;
}
}


现使用以下方式操作指针,向SDRAM地址写值:

#define SRAM_BASE_ADDR          0XC0000000UL //SDRAM开始地址

定义两个指针如下:
struct struct_sram* sram_ptr = (struct struct_sram*)SRAM_BASE_ADDR;
struct struct_report* report_tail;

struct struct_sram{
    struct struct_report report_buf[REPORT_SIZE];
};

struct struct_report{
    unsigned short len;
    char buf[REPORT_BUF_SIZE];
};

#define REPORT_SIZE         1000
#define REPORT_BUF_SIZE     300



主函数内,初始化report_tail指针后,对report_tail指针进行偏移操作
report_tail = sram_ptr->report_buf;
while(1)
{
     report_tail += 1;                 
  if (report_tail >= sram_ptr->report_buf+REPORT_SIZE)      
   report_tail -=REPORT_SIZE;  

delay_ms(1000);
}

单步调试时
report_tail+=1运行之后,程序就会挂掉,
这是什么原因,求大神指点




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。