【急】STM32F130ZE在UC/OS环境下读写SD卡失败!
各位大侠,小弟最近做在UC/OS环境下读写SD卡的实验,UC/OS能够正常运行,裸机下SD卡也能正常读写,可是把UC/OS和读写SD卡的程序放到一个工程中,就不能读写SD卡了。我用中断方式查看是否写完毕,好像中断程序根本就进不去,最终程序就死在HardFaultException这了,实在是不解,望各位大侠不吝赐教!我用的MDK4.11开发环境RE:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!
不看程序不知道错误问题在什么地方,只能估计:1、中断中未处理UCOS系统进入和退出中断
2、SD卡驱动中有数组操作超出数组大小。
回复:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!
回复第 2 楼 安于2011-06-02 00:44:17发表:不看程序不知道错误问题在什么地方,只能估计:
1、中断中未处理UCOS系统进入和退出中断
2、SD卡驱动中有数组操作超出数组大小。
首先感谢斑竹的即时回复!主要是程序有10M左右没法上传!
单个运行UCOS和SD卡程序均能正常运行,把两个合到一个工程中运行到红色的那一句就出现上面的错误了!
下面是我写SD卡的子程序和中断子程序
SD_Error SD_WriteBlock(u32 addr, u32 *writebuff, u16 BlockSize)
{
SD_Error errorstatus = SD_OK;
u8 power = 0, cardstate = 0;
u32 timeout = 0, bytestransferred = 0;
u32 cardstatus = 0, count = 0, restwords = 0;
u32 *tempbuff = writebuff;
if (writebuff == NULL)
{
errorstatus = SD_INVALID_PARAMETER;
return(errorstatus);
}
TransferError = SD_OK;
TransferEnd = 0;
TotalNumberOfBytes = 0;
SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
SDIO_DataInitStructure.SDIO_DataLength = 0;
SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_1b;
SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard;
SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Disable;
SDIO_DataConfig(&SDIO_DataInitStructure);
SDIO_DMACmd(DISABLE);
if (SDIO_GetResponse(SDIO_RESP1) & SD_CARD_LOCKED)
{
errorstatus = SD_LOCK_UNLOCK_FAILED;
return(errorstatus);
}
/* Set the block size, both on controller and card */
if ((BlockSize > 0) && (BlockSize
RE:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!
很可能不是这里的问题,你看看你写数据的时候,写入数据的个数和数组大小比较一下。回复:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!
回复第 4 楼 安于2011-06-02 08:03:53发表:很可能不是这里的问题,你看看你写数据的时候,写入数据的个数和数组大小比较一下。
大小是一样的。UCOS下跟裸机写入的是同一个数据,裸机可以成功但是UCOS就不行了!实在是不解
页:
[1]