小弟不是真心贴代码的,可是看到下面的代码之后就疑惑了:
while (!(SDIO->STA & (SDIO_FLAG_DBCKEND | SDIO_FLAG_TXUNDERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_STBITERR)))
{
if (SDIO_GetFlagStatus(SDIO_FLAG_TXFIFOHE) != RESET)
{
if ((512 - bytestransferred) < 32)
{
//C primer plus这本书还是很好的,可以发现?运算符一般用于不足1的时候进一搞的,碉堡
//restwords:字的个数,因为是32位机机
restwords = ((512 - bytestransferred) % 4 == 0) ? ((512 - bytestransferred) / 4) : (( 512 - bytestransferred) / 4 + 1);
for (count = 0; count < restwords; count++, tempbuff++, bytestransferred += 4)
{
SDIO_WriteData(*tempbuff);
}
}
else
{
for (count = 0; count < 8; count++)
{
SDIO_WriteData(*(tempbuff + count));
}
tempbuff += 8;
bytestransferred += 32;
}
}
}
这段代码是SD_WriteBlock函数里面的,这边小弟有一个问题,这个bytestransferred 变量是干嘛的,为什么bytestransferred 要加32?? |