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

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

[复制链接]
stary666 发布时间:2018-3-13 11:38
实现了SD卡的加载,于是继续实现文件的打开
. H( G2 i9 [. b1 p% A/ F  mSD卡里面有个data.txt文件,其内容是" W  S! Q  }$ ?% }
123     
) l5 a3 E2 s' b# P% {' Dabc) I* B1 R, k6 ?" T
下面要实现对文件的打开操作
5 @. [/ Q2 ?" c: P1 J9 @6 H在main函数中添加如下代码
' Q: s9 J: q; G0 C/ }$ \/ S& W) B8 D    sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ);   5 G  E3 m/ P1 b- K3 o/ F( k( H3 U
    if(sta): K3 T; `6 g: U# b( @- L
        printf("SD Card open fail\r\n");
, z) P8 W- v' U( b    else
7 G# L1 E+ `- t6 X+ e5 t       printf("SD Card open\r\n");5 c* }' }# n* L& G9 x% E0 E+ x. Q
很顺利,没有打印fail# M9 O" }9 Y8 e1 R+ ?, k) \6 C

3 O* t+ {. a. @6 N" Y' [下面开始实现read文件,添加如下代码, p9 ~. t8 B0 Z( @
% b) B0 v( H3 U4 a8 ]
sta = f_read(&fil, buffer, 1, &br);* O6 m& @2 I. h) [( V. l# q' X
        if (sta == FR_OK )  
! W# |7 X/ p5 n7 D7 F        {  & S; @; y6 M# J5 Y- x- Y9 c2 u
           printf("\r\n f_read() ok .. \r\n");
' Z7 {0 G) X" B# @: W% x4 ?2 g: v% m$ e
            for(len =0;len<br;len++)
( P8 `+ Y" H3 Z& C) ^                printf("%c",buffer[len]);' p7 r! o, e3 [/ ?, q

8 T7 p3 k7 P+ P        }else{  
; a( T* `  ~& F: g- q. e            printf("\r\n f_read() fail .. \r\n");     # E" j. a$ R8 k4 x9 ^
        }
# Y# `* ^' |" Q  s/ A4 c- ^, C输出结果是) P1 B' d( r% G( T
f_read() ok ..
, E8 g: a* p; O* e1! G9 w5 o7 U! t5 G. |* P8 L! Z: g( A
没有完全读完文件内容) W  |( z8 q: N, t, G
仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决
" V5 W7 N3 i) N2 `% h* Q2 G  for(t=0;t<512;t++)# [* G& [, x8 p
    {9 N  l8 b, r4 _
        sta = f_read(&fil, buffer, 1, &br);
  Q6 W" g8 v5 c( ~. X        if (sta == FR_OK )  
& r/ f# F4 H& r% H6 T: B        {  8 e1 ]: Y5 t' G2 J3 v; h8 n7 z, k. v
//            printf("\r\n f_read() ok .. \r\n");, H  F  Y9 @+ p2 s* [4 l. u

: }$ g2 [* _3 w* B            for(len =0;len<br;len++)
2 s  o  L2 G3 P4 A. F3 h5 ]8 M3 @                printf("%c",buffer[len]);
4 z+ h, f7 N/ N# p6 A( S
7 b0 l" v: y- n! k+ H$ j        }else{  ) v% x8 c" ~( Q4 @) Q, d& k
            printf("\r\n f_read() fail .. \r\n");     
; w6 a' Y, ]- f. x- n        }
' Y) b6 X, z, D- e9 N( S7 g% Q+ ~    }
. f) ]4 s& P# m3 J+ x打印结果见下图6 X/ {* \+ A& U( S9 Y

% c! f1 f; E4 j) O9 u6 Q% t" G$ B$ h, {6 T9 h" c

' G7 \+ g, J. C. Z0 q( i) @+ i: Y0 |! p8 Z8 v" J- v' s

2 k5 e3 i( Q: y

' G6 Z" }" }! u9 h5 m
0 ~! F' [, U' c9 g$ J$ M7 ]; {
" t8 u% Z+ t: l0 w' m5 ~- x
                                        发帖与2018年3月13日
! T5 N! s6 |" b
赞 收藏 评论0 发布时间:2018-3-13 11:38

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版