首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

有没有哪位高手遇到过进入某个函数后,堆栈溢出经过,连函数代码都改变了的

2012-10-09 
有没有谁遇到过进入某个函数后,堆栈溢出经过,连函数代码都改变了的SD_CS_LOW()SD_CheckVoltage()ret S

有没有谁遇到过进入某个函数后,堆栈溢出经过,连函数代码都改变了的
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了,这里我想贴图的,不知道怎么贴。而没进入这个函数前,代码区的内存都是正常的。

[解决办法]
升级一下IAR就没有这个问题了,不知道为什么

热点排行