打印

堆栈溢出问题

[复制链接]
1061|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-5-13 18:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SD_CS_LOW();  
SD_CheckVoltage();

ret = SD_ReadOCR(recbuf); // 读OCR寄存器,查询卡支持的电压值  

SD_ReadOCR(recbuf)的函数体如下:
INT8U SD_ReadOCR(INT8U *recbuf)
{

INT8U param[4] = {0, 0, 0, 0}, resp[5] = {1, 1, 1, 1, 1};
INT8U tmp = 0;

tmp = SD_SendCmd(CMD58, param, CMD58_R, resp);  
if (tmp != SD_NO_ERR)  
{
return tmp;  

}  
if (resp[0] != 0x80)
{

return SD_ERR_CMD_RESP;  

}

for (tmp = 0; tmp < 4; tmp++)
{

recbuf[tmp] = resp[tmp + 1];  
}

return SD_NO_ERR;

}

当我单步进入SD_ReadOCR(recbuf)函数体后,SD_ReadOCR(recbuf)代码所在的flash全变成FF了还一部分其它的程序flash也变成FF了,而没进入这个函数前,代码区的内存都是正常的。

相关帖子

沙发
hsbjb| | 2012-5-13 18:57 | 只看该作者
堆栈在RAM中,如果你的执行程序是拷贝到RAM中来执行,那么,堆栈溢出后,完全可能将将程序区覆盖。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝