STM32 시리즈 SPI로 SD카드 읽고 쓰는 소스중에서
https://github.com/eziya/STM32_SPI_SDCARD/
가 있다.
이 소스중에
https://github.com/eziya/STM32_SPI_SDCARD/blob/master/STM32F4_HAL_SPI_SDCARD/Src/fatfs_sd.c
/* receive data block */
static bool SD_RxDataBlock(BYTE *buff, UINT len)
{
uint8_t token;
/* timeout 200ms */
Timer1 = 200;
/* loop until receive a response or timeout */
do {
token = SPI_RxByte();
} while((token == 0xFF) && Timer1);
/* invalid response */
if(token != 0xFE) return FALSE;
/* receive data */
do {
SPI_RxBytePtr(buff++);
len--;
} while(len--);
/* discard CRC */
SPI_RxByte();
SPI_RxByte();
return TRUE;
}
이것은 아래처럼 수정해야함.
/* receive data block */
static bool SD_RxDataBlock(BYTE *buff, UINT len)
{
uint8_t token;
/* timeout 200ms */
Timer1 = 200;
/* loop until receive a response or timeout */
do {
token = SPI_RxByte();
} while((token == 0xFF) && Timer1);
/* invalid response */
if(token != 0xFE) return FALSE;
/* receive data */
do {
SPI_RxBytePtr(buff++);
len--;
} while(len !=0);
/* discard CRC */
SPI_RxByte();
SPI_RxByte();
return TRUE;
}
len-- 대신 --len을 써도 된다.
그러지 말고 명확하게 하기 위해서 --는 먼저 하고 비교문을 확실히 넣는것이 낫다.
No comments:
Post a Comment