初级会员

- 积分
- 69
- 金钱
- 69
- 注册时间
- 2014-10-29
- 在线时间
- 2 小时
|
5金钱
本人小白,在学习stm32的时候遇到问题,希望高手们能帮我分析一下。
我用FATFS文件系统读取SD卡上的文件,读出的数据长度不正确,并且错乱。
具体情况:使用战舰开发板,SD卡实验例程,读取SD卡根目录下的a.txt文档(文档内容只有一个数字“1”),然后用USART1把数据传回,传回的数据前几个字节是错误的,长度也超出设定的512字节。
代码如下:
void OutPutFile(void)
{
unsigned int a;
FILINFO finfo;
DIR dirs;
char path[15]={""}; //文件夹名,为空表示是根目录
FRESULT res;
FIL fsrc;
u8 buffer[512];
if(f_opendir(&dirs,path) == FR_OK) //读取该磁盘的根目录或指定文件夹
{
while(f_readdir(&dirs, &finfo) == FR_OK)//循环依次读取文件名
{
if(!finfo.fname[0]) break; //如果是文件名为空表示到目录的末尾,退出
if(finfo.fattrib & AM_ARC)//判断文件属性是否为存档型 TXT文件一般都为存档型
{
res = f_open(&fsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ);// 以读的方式打开文件
br=1;//读取的次数(一次读出512字节),最大512次
for (;;)
{
for(a=0; a<512; a++) buffer[a]=0;
res = f_read(&fsrc,buffer,512, &br);//从a1.txt,一次读出512字节
for(a=0; a<512; a++)
{
printf("%x",buffer[a]);//%c
//USART_SendData(USART1,buffer[a]);//使用串口1发送回PC
//while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
if(res || br == 0) break; // 错误或结束,退出
}
f_close(&fsrc); //关闭文档
}
}
}
}
int main(void)
{
delay_init();
NVIC_Configuration();
uart_init(115200);
exfuns_init();
mem_init(SRAMIN);
while(SD_Initialize())
f_mount(0,fs[0]);
OutPutFile();
while(1)
{
}
}
|
|