昨天利用STM32读写TF卡,遇到这样的怪事,
若执行如下程序:
Status = SD_WriteMultiBlocks(0x00, Buffer_MultiBlock_Tx, BlockSize, NumberOfBlocks);
就不会死机;
for(i=0;i<100;i++)
{
Status = SD_WriteMultiBlocks(0x00, Buffer_MultiBlock_Tx, BlockSize, NumberOfBlocks);
SendChar(i);
}
就会死机;
加入SendChar(i);是为了查看到底执行了几次;
死机位置为:
SD_Error SD_WriteMultiBlocks(u32 addr, u32 *writebuff, u16 BlockSize, u32 NumberOfBlocks)函数中的:
while (DMA_GetFlagStatus(DMA2_FLAG_TC4) == RESET)
{}
程序就一直停在这里了;
直到死机前,i的值为167,每次都是167,
也就是说程序执行一会就会死机,是什么原因呢 |