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

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

[复制链接]
stary666 发布时间:2018-3-13 11:38
实现了SD卡的加载,于是继续实现文件的打开
3 }* O8 v4 u8 DSD卡里面有个data.txt文件,其内容是9 [& N2 g7 x* Z! B) w0 }
123     . E$ n# g8 `% Z2 u0 F/ B$ ~
abc
) u8 d2 O% ~) C+ l4 }, w下面要实现对文件的打开操作
" r  [1 A/ M- b  r, j在main函数中添加如下代码
2 [1 \! R$ o( q) g  P: b4 M) {    sta = f_open(&fil,"data.txt",FA_OPEN_ALWAYS | FA_READ);   - o" w! j3 x7 K
    if(sta)2 u+ K: T, A; ?
        printf("SD Card open fail\r\n");8 z9 N5 E- O$ v9 @, `; [7 {
    else# G- W* D) |  j& J( g8 }" M- o
       printf("SD Card open\r\n");. P$ Y& v; f$ I( M! l, x. r( J4 R
很顺利,没有打印fail& }+ f0 {$ F$ E( [" a& f& E) i9 c3 A

' p  i1 L9 k/ V% l6 D下面开始实现read文件,添加如下代码9 n* d% h$ e# \( k* Q6 }  b# g
8 m7 q/ [+ Y0 d3 {3 e
sta = f_read(&fil, buffer, 1, &br);5 K4 N# r4 l$ p
        if (sta == FR_OK )  , j7 I, d: o  g3 N' P: q5 Y' k6 u
        {  
" C5 o7 t9 a9 N6 n7 Y& g           printf("\r\n f_read() ok .. \r\n");
( H& Q* G% q2 Q' \: x* g5 t$ v
, v1 s6 @$ I6 S; b4 S1 M7 H            for(len =0;len<br;len++)5 y% f3 t$ M, {6 v
                printf("%c",buffer[len]);
; f' g  P5 O! Z9 C( v% ?7 s* ]) A5 H* r
        }else{  $ Z) y5 [" G8 z3 @0 i2 @
            printf("\r\n f_read() fail .. \r\n");     $ e- j" w- J4 f; J% v) P
        }
3 P2 U: y2 G3 E3 y/ V; X, s输出结果是
  E, I: f4 h% Z7 `f_read() ok .." I+ J. E" o; r; @$ t
1  j6 O2 p+ x3 B0 c! l5 V
没有完全读完文件内容1 X! s: U! _; S0 {
仔细看了f_read,每次只能返回1个字符,于是在外面加个for循环,问题解决
$ |7 E) x1 j8 W0 F% D% \6 Z5 f5 q  for(t=0;t<512;t++)
5 u6 }; Q3 H9 _. R9 _7 o    {& I* B$ J. b3 N/ u6 \; u2 ]
        sta = f_read(&fil, buffer, 1, &br);2 J* {. v- r# k+ @
        if (sta == FR_OK )  ' K; b2 g' m- M; L- Q( v
        {  6 _* }1 f' y6 h. r2 y
//            printf("\r\n f_read() ok .. \r\n");1 W9 M9 l' g' H! v

7 O) x3 h* H) l' l4 b            for(len =0;len<br;len++)
6 O4 c+ Y9 E: _. T- v                printf("%c",buffer[len]);* _* J& w; ^1 D; O' ]  N. Y" u

" A0 l, \5 B6 c) Y+ f. P! T        }else{  
, C! e) I+ x+ K/ W            printf("\r\n f_read() fail .. \r\n");     
7 `* O# F1 F0 _. G+ X        } # w; S' g8 R9 ~. z; x; _
    }2 d4 c$ T' m) o1 y* i8 J
打印结果见下图
* C5 R* H4 B: u& V, N! P
6 q0 N. U3 |8 u2 o# S7 o- d$ e4 E5 G" f/ }9 V4 ]
4 ?  }" V( q$ T% R4 K
* w6 V- v0 F5 s5 a* c1 d  A, H
- v0 x9 ?: C& }: [  W7 `; G

* }4 Y. S5 B# Z, U- U1 f' C1 ~
/ ~3 X; ?8 q- u4 a

& z+ R7 e6 {9 K+ N2 L+ r1 p8 N                                        发帖与2018年3月13日+ |: u) D! t/ m8 n, B1 W1 S! s
赞 收藏 评论0 发布时间:2018-3-13 11:38

举报

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