你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f769 寄存器配置SD卡---移植fatfs--实现文件read操作

[复制链接]
stary666 发布时间:2018-3-13 11:38
实现了SD卡的加载,于是继续实现文件的打开
  u6 c! j# _  E& q* X+ F3 ^SD卡里面有个data.txt文件,其内容是
4 ]" {. _+ f9 V: W: U123     
- U$ |; n+ ~6 F# u9 nabc6 h0 K" v0 v5 q. [  |5 ~
下面要实现对文件的打开操作8 ^3 n3 Y! G8 {
在main函数中添加如下代码' y' o+ r9 l& \
    sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ);   
$ i- Q$ l: v6 I( C+ l    if(sta)! z# |7 o+ h, C; h
        printf("SD Card open fail\r\n");+ {* {  [8 n: V4 X' p5 w0 O8 ]
    else" I/ v0 [: G/ R+ u# t
       printf("SD Card open\r\n");- y% Q  D4 M! _9 J6 G2 u% E
很顺利,没有打印fail& W" W( V3 c+ a( r7 @& o7 E; P7 J
+ Y' e- Q, A* \8 X; Q( B# L2 d
下面开始实现read文件,添加如下代码; ~% q# v3 h  v' k. H4 t3 d0 P

3 C! E4 Q3 G& C/ N2 R* g( lsta = f_read(&fil, buffer, 1, &br);* A+ N1 h4 H, O8 u& \+ }
        if (sta == FR_OK )  , P+ C& C  d  s5 X1 t- {
        {  " |2 ?! W/ [3 |- y! Y
           printf("\r\n f_read() ok .. \r\n");
7 E+ o4 n: ~4 u& A6 w: Z: _; g, e! [, n& V. t
            for(len =0;len<br;len++)
$ h  ?' ?4 u! n5 ^, B! }' p                printf("%c",buffer[len]);
5 X# P' @0 ^7 i# [* |8 X: \% P9 D6 {, v2 s; A
        }else{  
0 X! F, g, L8 }; {& j0 ^* q            printf("\r\n f_read() fail .. \r\n");     
' N, p2 G* t  Q6 m1 W* Z        }
4 n+ D  E; r& Y输出结果是
( ?3 ?2 [, r1 A) df_read() ok ..6 ]2 {# s' B' q% b; m. x& s
11 {9 e; o! [9 N; i5 ^8 ?4 C2 q
没有完全读完文件内容1 O0 a6 Q1 L+ |: E% i( T4 k
仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决" c6 K8 `; u/ v9 E1 Y  T
  for(t=0;t<512;t++)0 J( _4 y$ g4 M% K/ |
    {
; M# T5 j1 N. y6 T( m7 G        sta = f_read(&fil, buffer, 1, &br);
6 C! m# u: C) h/ T9 Q$ F        if (sta == FR_OK )  $ W: ~  X( K6 Q) o5 _+ i
        {  ! c  v% f9 @: c' Z% n
//            printf("\r\n f_read() ok .. \r\n");" x, @# ~- E, K. U+ s
' Q5 ^" e* Q9 H( q# l2 |
            for(len =0;len<br;len++)
( e5 O( W- i$ G  w+ h; y, B                printf("%c",buffer[len]);
+ K) B8 d/ B5 m% i* K/ c" }7 o! l6 F. f* _+ r
        }else{  6 P5 a8 H* y+ z0 N' C+ m" E
            printf("\r\n f_read() fail .. \r\n");     ' }( ]  Q( H, n/ A1 s
        } ; e  X3 q* b0 }( v. P
    }
4 e8 `% V, \8 b" s& {7 |3 H打印结果见下图5 r& ~' v0 e9 Y; ?, C
% D- J0 g% m: O5 R/ c

( c" e6 q7 z+ O4 Y. R& W0 X  _/ `  e: k  D, Q
. Y0 `: H! ?$ \7 y

) O0 K7 E6 D0 V

3 U0 p0 `5 h& ^; |7 c9 y( l; J' N/ \5 _7 y+ p9 ^
0 c! `' S4 I1 B4 e8 s5 l
                                        发帖与2018年3月13日8 P1 a+ y& z8 L7 u
收藏 评论0 发布时间:2018-3-13 11:38

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版