外部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运行之后,程序就会挂掉,
这是什么原因,求大神指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>