实现了SD卡的加载,于是继续实现文件的打开 SD卡里面有个data.txt文件,其内容是 123 5 @2 v: i6 V, b4 f: g abc 下面要实现对文件的打开操作1 ^6 ~6 W$ }5 A) f 在main函数中添加如下代码2 L( a u2 }. l+ V, H5 j' }3 g sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ); 5 Z4 ^' l/ r# r# K' E2 @ if(sta) printf("SD Card open fail\r\n");; I* r9 h0 Q7 `; M T else. E1 U4 Z* Z+ Z8 Y- ^0 ? printf("SD Card open\r\n"); 很顺利,没有打印fail$ o; X/ H! z! m' _1 C$ G0 g$ g2 x. C 5 z: C& g0 g# O, E$ B. ` 下面开始实现read文件,添加如下代码, y, h F% C& ]* F+ l ! L6 S& A5 T- R2 j( U6 c+ a. z, f @ sta = f_read(&fil, buffer, 1, &br); if (sta == FR_OK ) . Q& p# J% [ I4 p! D% b9 B { printf("\r\n f_read() ok .. \r\n");8 n4 x, ^# @( C4 ~7 G0 p* m* m for(len =0;len<br;len++)) r9 P& {0 Y. I4 H5 w9 b printf("%c",buffer[len]);( l. B# I" @6 I% ~ 4 G6 A- M; [2 R: M3 B0 E! W, b }else{ printf("\r\n f_read() fail .. \r\n"); ! }3 _2 m1 X( C+ G( T' Z } 输出结果是 f_read() ok .. 1 没有完全读完文件内容 仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决3 z7 Q4 j: C) k/ R for(t=0;t<512;t++): q4 u8 f' y" J {2 X* ` C4 k1 q3 u; q3 ?3 T2 N! L sta = f_read(&fil, buffer, 1, &br); if (sta == FR_OK ) 9 ^0 e7 m6 h% } z7 i { : p5 R, j5 F9 U! U! I$ R // printf("\r\n f_read() ok .. \r\n"); for(len =0;len<br;len++) printf("%c",buffer[len]);; p8 D6 H% |$ R* E. \+ ]3 ^ - a" \8 y6 V% | }else{ % c- F- ^& v2 N% s' y printf("\r\n f_read() fail .. \r\n"); / m" w! `: F$ X1 o1 J$ p# L } 5 `* a9 B' N! g9 f7 r1 }4 ~ u } 打印结果见下图: @- h- x8 p: w0 W! W $ @" @" w: t8 v; a " V4 C6 m- E9 g: M# }# o * E* A) ]5 V# u: b+ | 6 A N8 k ]$ o/ W3 j3 I ( r' b' U# G; ^+ N 4 @ o, D f2 @9 `/ n 发帖与2018年3月13日* G* ~. N s9 `8 P8 d |