解决了因为汉字在两个数据块直接导致的数据流乱码,

下个版本打算两字节两个字节的读取,这样就就不怕数据块中
换行太多导致显示不下。

Signed-off-by: 无闻风 <53944749+wuwenfengmi1998@users.noreply.github.com>
This commit is contained in:
无闻风
2021-03-13 17:10:37 +08:00
parent 1dee44ab7c
commit 82980c4cdc
50 changed files with 12650 additions and 11067 deletions
+15 -10
View File
@@ -24,15 +24,19 @@ static uint8_t PowerFlag = 0;
#define SD_CS_GPIO_Port GPIOD
#define SD_CS_Pin GPIO_PIN_2
volatile uint8_t Timer1, Timer2;
volatile uint32_t Timer1, Timer2;
void SDTimer_Handler(void)
{
if(Timer1 > 0)
Timer1--;
{
Timer1--;
}
if(Timer2 > 0)
Timer2--;
{
Timer2--;
}
}
/* SPI Chip Select */
@@ -79,13 +83,14 @@ static uint8_t SD_ReadyWait(void)
uint8_t res;
Timer2 = 50;
Timer2 = 50000;
SPI_RxByte();
do
{
res = SPI_RxByte();
Timer2--;
} while ((res != 0xFF) && Timer2);
return res;
@@ -152,13 +157,11 @@ static bool SD_RxDataBlock(BYTE *buff, UINT btr)
{
uint8_t token;
Timer1 = 10;
Timer1 = 10000;
do
{
token = SPI_RxByte();
Timer1--;
} while((token == 0xFF) && Timer1);
@@ -297,7 +300,7 @@ DSTATUS SD_disk_initialize(BYTE drv)
if (SD_SendCmd(CMD0, 0) == 1)
{
Timer1 = 100;
Timer1 = 100000;
if (SD_SendCmd(CMD8, 0x1AA) == 1)
@@ -314,6 +317,7 @@ DSTATUS SD_disk_initialize(BYTE drv)
do {
if (SD_SendCmd(CMD55, 0) <= 1 && SD_SendCmd(CMD41, 1UL << 30) == 0)
break; /* ACMD41 with HCS bit */
Timer1--;
} while (Timer1);
if (Timer1 && SD_SendCmd(CMD58, 0) == 0)
@@ -344,6 +348,7 @@ DSTATUS SD_disk_initialize(BYTE drv)
if (SD_SendCmd(CMD1, 0) == 0)
break; /* CMD1 */
}
Timer1--;
} while (Timer1);
if (!Timer1 || SD_SendCmd(CMD16, 512) != 0)