你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
STM32+SDIO+FATFS实例
[复制链接]
yanghappy
发布时间:2011-3-11 22:25
阅读主题, 点击返回1楼
赞
0
收藏
2
评论
641
分享
发布时间:2011-3-11 22:25
请先
登录
后回复
641个回答
at-358233
回答时间:2012-10-15 20:59:14
a0a.1 0b0c
RE:STM32+SDIO+FATFS实例
也不知道能用否,下来看看!
赞
评论
回复
支持
反对
xinjitmzy-34588
回答时间:2012-10-16 11:13:56
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
又是回复可见,学习一下
赞
评论
回复
支持
反对
cangbai
回答时间:2012-10-16 22:29:55
a0a.1 0b0c
RE:STM32+SDIO+FATFS实例
谢谢分享,学习一下
赞
评论
回复
支持
反对
danny-395440
回答时间:2012-10-17 21:13:14
a0a.1 0b0c
RE:STM32+SDIO+FATFS实例
STM32+SDIO+FATFS实例
赞
评论
回复
支持
反对
QQ897956996
回答时间:2012-10-19 11:12:47
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
大师,我移植了FATFS到flash,发现格式化未成功(未移植文件系统时多扇区(n*512B)读写没问题,已经测试过),如何配置格式化函数呀:
1 K3 C& G+ R8 `$ i1 `# [' v
* [3 P( B$ q, y0 g' D( S! t
#define _MAX_SS 512 /* 512, 1024, 2048 or 4096 */
' v* C p: Q9 ~. U$ E- O
/* Maximum sector size to be handled.
f5 O6 O2 Z+ @ g
/ Always set 512 for memory card and hard disk but a larger value may be
" A7 L8 n- u$ {! {; ^, r7 r
/ required for floppy disk (512/1024) and optical disk (512/2048).
6 d' s: I$ w% L
/ When _MAX_SS is larger than 512, GET_SECTOR_SIZE command must be implememted
; ~! \/ E! s+ k
/ to the disk_ioctl function. */
) |6 i# N$ m$ V
- q# R* u9 _) [: i4 i' m1 u% ]
4 j9 ?; D( J- F t4 V( g
/*-----------------------------------------------------------------------*/
' G6 f5 I. @. S! Q$ s; [
/* Miscellaneous Functions */
# X! `* q* {- b! A
2 G, p( ]0 u9 K- I5 U5 i& z
DRESULT disk_ioctl(
S3 l# s3 k+ h0 g- w
BYTE drv, /* Physical drive nmuber (0..) */
1 ~( r: N& m; o
BYTE ctrl, /* Control code */
: f0 J/ Z' }4 _8 u9 @
void *buff /* Buffer to send/receive control data */
. W2 Q4 ]; T. X
)
; c& C: Q" r/ o+ Y4 v
{
0 ~) i1 W* f+ Y/ H( f* e" E
DRESULT res = RES_OK;
4 ?: P2 h- M& s3 c2 k4 K: O
//DWORD result;
9 D3 o2 I" r' V+ `& }1 W
if (drv)
3 } h! A5 |9 ^
{
, j, f9 e/ D: O5 j; c0 u1 n8 [1 ^3 v- h
return RES_ERROR;
4 N3 N: X f$ S% E
}
. z+ O4 Y) D! \' S5 E7 V
! C/ V: A* F/ S+ S# H* O, ?% H
switch (ctrl)
6 U* m$ e. b# O
{
3 s; W) t8 C4 ]; x
case CTRL_SYNC:
: t' x2 \. Q3 i$ a) A' o) m
break;
* _# t1 ?8 E( J8 C ] K4 M
case GET_SECTOR_COUNT:
o$ q( m6 R: X6 G/ t
( y! W+ h( ?! n0 K; Z6 W
*(DWORD*)buff = (DWORD) 4096;
h, S3 }6 C, s' m# T2 H( e q! B
break; //2M byte
* N$ E5 b' D I1 C' e: S: R
. G7 D1 F5 t, b
case GET_SECTOR_SIZE:
6 f9 b0 x% g G0 [
" |, _( Q3 E& y4 w6 R: |# u% G
//*(DWORD*)buff = (DWORD) 2048; //>512时从这里获得扇区大小
T8 ]: ^% c" C# I: d+ \5 M9 l2 h
break;
" ^/ b/ w1 t& @5 `" B9 S5 F
//单扇区字节数
' n$ [- o0 A5 T6 J
case GET_BLOCK_SIZE:
: G& Q5 c: Z* L! t
1 M- h) M& m6 Z( K' u; H
*(DWORD*)buff = (DWORD) 4096;
4 f7 Z, ]; \" s8 s
break; //族大小
. r" i0 d! N5 m: d y5 m
# O% R- E/ m- B1 V7 A d$ E
case CTRL_POWER :
2 g+ r4 v4 V, }& b
break;
" C M, h% w2 |8 ^
case CTRL_LOCK :
0 \0 s5 z( G: [
break;
/ x$ G: I* c+ `7 ]3 _) m
case CTRL_EJECT :
8 P- E& c; H% d7 S5 P
break;
; O5 i: C! A4 r# E7 a
default:
% H, I. {, h1 C* a' C( ^
res = RES_ERROR;
4 C, O6 |, `8 i- y
break;
6 o3 i1 [3 k# B5 A& ~
}
! y: b1 ~- {& }0 E& N
return res;
* d( B5 A3 }1 R/ V
}
& N e$ G3 w; `' A: X7 X+ v& p
& |" G" j; P1 ]2 u0 t: t4 L
/ n5 n6 h/ \0 [% g' g3 @) S2 k0 Q# _
int main(void)
B- U$ I0 |5 G- l% `
{
6 `/ J9 H/ S3 q1 B0 [, v. V
UARTInit (); /* UARTInit */
' X7 } d! u) Q. H
PINSEL0 = PINSEL0 & (~0x0F); /* UART0,设置I/O连接到UART*/
- c/ J. {8 ]" G8 p
PINSEL0 = PINSEL0 | 0x05; /* P0.0 = TXD0,P0.1 = RXD0*/
# {7 |5 g" ?+ W* K
; N0 L6 L9 g0 I& J2 }# j- ^
UART0SendStr("\x0c\0");
: F+ f6 N# t2 J. S; G7 L* h
UART0SendStr("\x0c\0"); //超级终端清屏
! B8 L4 _" q8 t
UART0SendStr("\033[1;40;32m"); //设置超级终端背景为黑色,字符为绿色
% j) y& _$ C I4 h7 G8 H
UART0SendStr("\r\n*******************************************************************************");
: S* u; N! y1 `- ?! N" X
UART0SendStr("\r\n*********************** Copyright 2012-10-10, liujiehan ***********************");
+ N% P6 y$ E& ?. C3 O
UART0SendStr("\r\n************************** http://www.upcomputer.com **************************");
1 F! |' e& T) m5 v1 {
UART0SendStr("\r\n***************************** All Rights Reserved *****************************");
3 e4 P2 b" j9 W0 _- d6 W- U
UART0SendStr("\r\n*******************************************************************************");
$ ~; t$ r$ o/ ~7 W2 x4 o
UART0SendStr("\r\n");
( O, a5 S" m+ m( v
) u5 ], b [" h, Y
/*初始化文件系统,检查芯片是否插入以及是否型号正确*/
0 Y- P, l5 |# F( n
res = disk_initialize(NORFLASH);
; S) H& ]& M% F
if(res == RES_OK)
- P* D* `9 M) n) ~$ _
{
: M6 C3 {' E+ i0 D Y' Q b8 N0 w
UART0SendStr("initialize filesystem successed!\n\r\n\r");
8 D, N0 b- G% \, W
}
: \& t& o! R% U0 g) \1 C9 Q
else
1 p4 e9 {: l( Y2 j/ x2 Q# ]% i* j9 g
{
# O! X9 c) H: B& {
UART0SendStr("initialize filesystem failed!\n\r\n\r");
2 h, N$ X" B9 _% y g
}
! E @& [' y$ D! x. e: y- G8 _
/*挂载文件系统*/
e; p# I+ I' L X/ l, d
res = f_mount(NORFLASH,&fs);
8 C& B# y: Q! r+ |* q! w: ]7 N
if(res == RES_OK)
/ n9 v- t7 z9 y1 y2 [
{
! w/ N) ?) x3 J* j7 @
UART0SendStr("mount filesystem successed!\n\r\n\r");
: V& X+ K6 u9 ^+ H& o. y& Q
}
/ {6 ]7 ^9 J3 h* R; g7 U* w
else
1 }; O+ p. ?0 B* t% v
{
* H+ `0 r( B; Q' d7 B: N
UART0SendStr("mount filesystem failed!\n\r\n\r");
4 _- [- z( M: ~0 {' i) f
}
# Q( ?/ e3 L* ^* r7 T; Z1 k
/*格式化磁盘*/
: \2 [% f3 d! N/ M% h& f
UART0SendStr("正在格式化磁盘,请稍候...\n\r\n\r");
) g. o: N+ @& F1 N1 e" P
//res = f_mkfs(NORFLASH,1,4096);//4096:每簇占用字节数
. W- ~/ N" B7 w( p2 _$ [* D
res = f_mkfs(NORFLASH,0,4096);//4096:每簇占用字节数
/ R0 _& k$ j4 Y6 e0 ]
if(res == RES_OK)
; Z3 B4 g, s9 C- u. ]
{
6 W- {* V2 E3 Y/ a! R) a/ J
UART0SendStr("format filesystem successed!\n\r");
* a3 ]$ x* J) ^: X
9 J3 y# J! I+ ]$ \8 I
}
% V3 [' w- R) h; I% F5 V/ G
else
4 C, M* R, W6 B+ g2 U( ^" U
{
a7 q7 E) g- w! E
UART0SendStr("format filesystem failed!\n\r");
1 g. z; x4 [7 F- o
}
& v7 U0 C. C0 E
res = f_mount(NORFLASH,NULL);
* v8 Y/ A+ i; L7 i4 ?
/////////////////////////////////////////////////////////////////////////////////////////////////
/ F- r% `( g" {& Y, p4 i
res = f_mount(NORFLASH,&fs);
% D1 I! E2 O. N
5 b7 P; M1 U3 d0 r' V
/*写文件测试*/
( F% Z5 t/ B8 ]0 q
UART0SendStr("write file test......\n\r");
1 p0 i5 V! O8 e/ [
res = f_open(&FileObject, "test.txt", FA_CREATE_ALWAYS | FA_WRITE);
! r7 t! W- X. j& [& S5 I
。。。
$ F6 p+ d2 ?5 e* C; W/ E
}
, Z, F9 Q5 D) y1 P; b6 I0 `
赞
评论
回复
支持
反对
xyz_gg
回答时间:2012-10-23 16:52:23
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
( H! w5 W3 b/ p! X+ o
顶起!
赞
评论
回复
支持
反对
xieyungui
回答时间:2012-10-31 12:40:28
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
yyyy
赞
评论
回复
支持
反对
lty822877
回答时间:2012-11-4 20:18:56
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
谢谢楼主了!!!!!!!!!!!!!!!!!
赞
评论
回复
支持
反对
gzhsauto
回答时间:2012-11-11 02:14:43
a0a.1 0b0c
RE
学习一下:STM32+SDIO+FATFS实例
赞
评论
回复
支持
反对
llhai
回答时间:2012-11-11 23:04:44
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
及时雨啊,正需要这个
赞
评论
回复
支持
反对
JakeWOO
回答时间:2012-11-13 15:01:09
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
快看看~~~
赞
评论
回复
支持
反对
xiecailang
回答时间:2012-11-16 13:25:40
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
项目刚好需要,学习中
赞
评论
回复
支持
反对
sufengtyut
回答时间:2012-11-28 19:27:21
a0a.1 0b0c
回复:STM32+SDIO+FATFS实例
学习,遇到问题了
赞
评论
回复
支持
反对
dare-399038
回答时间:2012-11-29 12:31:24
a0a.1 0b0c
RE:STM32+SDIO+FATFS实例
wokankan
赞
评论
回复
支持
反对
gpsyu
回答时间:2012-11-30 14:01:30
a0a.1 0b0c
RE:STM32+SDIO+FATFS实例
好东西,正需要啊
赞
评论
回复
支持
反对
1 ...
19
20
21
22
23
24
25
26
27
... 43
/ 43 页
下一页
所属标签
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:STM32+SDIO+FATFS实例
回复:STM32+SDIO+FATFS实例
RE:STM32+SDIO+FATFS实例
RE:STM32+SDIO+FATFS实例
回复:STM32+SDIO+FATFS实例
#define _MAX_SS 512 /* 512, 1024, 2048 or 4096 */' v* C p: Q9 ~. U$ E- O
/* Maximum sector size to be handled. f5 O6 O2 Z+ @ g
/ Always set 512 for memory card and hard disk but a larger value may be
/ required for floppy disk (512/1024) and optical disk (512/2048).6 d' s: I$ w% L
/ When _MAX_SS is larger than 512, GET_SECTOR_SIZE command must be implememted
/ to the disk_ioctl function. */) |6 i# N$ m$ V
- q# R* u9 _) [: i4 i' m1 u% ]
4 j9 ?; D( J- F t4 V( g
/*-----------------------------------------------------------------------*/' G6 f5 I. @. S! Q$ s; [
/* Miscellaneous Functions */
DRESULT disk_ioctl(
BYTE drv, /* Physical drive nmuber (0..) */1 ~( r: N& m; o
BYTE ctrl, /* Control code */
void *buff /* Buffer to send/receive control data */. W2 Q4 ]; T. X
); c& C: Q" r/ o+ Y4 v
{
DRESULT res = RES_OK;
//DWORD result;
if (drv)3 } h! A5 |9 ^
{
return RES_ERROR;4 N3 N: X f$ S% E
}. z+ O4 Y) D! \' S5 E7 V
! C/ V: A* F/ S+ S# H* O, ?% H
switch (ctrl)
{ 3 s; W) t8 C4 ]; x
case CTRL_SYNC:: t' x2 \. Q3 i$ a) A' o) m
break;
case GET_SECTOR_COUNT:
( y! W+ h( ?! n0 K; Z6 W
*(DWORD*)buff = (DWORD) 4096; h, S3 }6 C, s' m# T2 H( e q! B
break; //2M byte* N$ E5 b' D I1 C' e: S: R
case GET_SECTOR_SIZE:6 f9 b0 x% g G0 [
//*(DWORD*)buff = (DWORD) 2048; //>512时从这里获得扇区大小 T8 ]: ^% c" C# I: d+ \5 M9 l2 h
break; " ^/ b/ w1 t& @5 `" B9 S5 F
//单扇区字节数' n$ [- o0 A5 T6 J
case GET_BLOCK_SIZE:
1 M- h) M& m6 Z( K' u; H
*(DWORD*)buff = (DWORD) 4096;4 f7 Z, ]; \" s8 s
break; //族大小 . r" i0 d! N5 m: d y5 m
case CTRL_POWER :
break;
case CTRL_LOCK :0 \0 s5 z( G: [
break;
case CTRL_EJECT :8 P- E& c; H% d7 S5 P
break;
default:% H, I. {, h1 C* a' C( ^
res = RES_ERROR;
break;
}! y: b1 ~- {& }0 E& N
return res;
}& N e$ G3 w; `' A: X7 X+ v& p
/ n5 n6 h/ \0 [% g' g3 @) S2 k0 Q# _
int main(void)
{6 `/ J9 H/ S3 q1 B0 [, v. V
UARTInit (); /* UARTInit */' X7 } d! u) Q. H
PINSEL0 = PINSEL0 & (~0x0F); /* UART0,设置I/O连接到UART*/
PINSEL0 = PINSEL0 | 0x05; /* P0.0 = TXD0,P0.1 = RXD0*/
UART0SendStr("\x0c\0");: F+ f6 N# t2 J. S; G7 L* h
UART0SendStr("\x0c\0"); //超级终端清屏
UART0SendStr("\033[1;40;32m"); //设置超级终端背景为黑色,字符为绿色
UART0SendStr("\r\n*******************************************************************************");
UART0SendStr("\r\n*********************** Copyright 2012-10-10, liujiehan ***********************");
UART0SendStr("\r\n************************** http://www.upcomputer.com **************************");1 F! |' e& T) m5 v1 {
UART0SendStr("\r\n***************************** All Rights Reserved *****************************");3 e4 P2 b" j9 W0 _- d6 W- U
UART0SendStr("\r\n*******************************************************************************");
UART0SendStr("\r\n");( O, a5 S" m+ m( v
) u5 ], b [" h, Y
/*初始化文件系统,检查芯片是否插入以及是否型号正确*/
res = disk_initialize(NORFLASH);; S) H& ]& M% F
if(res == RES_OK)- P* D* `9 M) n) ~$ _
{
UART0SendStr("initialize filesystem successed!\n\r\n\r");
}: \& t& o! R% U0 g) \1 C9 Q
else1 p4 e9 {: l( Y2 j/ x2 Q# ]% i* j9 g
{# O! X9 c) H: B& {
UART0SendStr("initialize filesystem failed!\n\r\n\r"); 2 h, N$ X" B9 _% y g
}! E @& [' y$ D! x. e: y- G8 _
/*挂载文件系统*/ e; p# I+ I' L X/ l, d
res = f_mount(NORFLASH,&fs);8 C& B# y: Q! r+ |* q! w: ]7 N
if(res == RES_OK)
{
UART0SendStr("mount filesystem successed!\n\r\n\r");: V& X+ K6 u9 ^+ H& o. y& Q
}/ {6 ]7 ^9 J3 h* R; g7 U* w
else1 }; O+ p. ?0 B* t% v
{
UART0SendStr("mount filesystem failed!\n\r\n\r"); 4 _- [- z( M: ~0 {' i) f
}# Q( ?/ e3 L* ^* r7 T; Z1 k
/*格式化磁盘*/: \2 [% f3 d! N/ M% h& f
UART0SendStr("正在格式化磁盘,请稍候...\n\r\n\r");
//res = f_mkfs(NORFLASH,1,4096);//4096:每簇占用字节数. W- ~/ N" B7 w( p2 _$ [* D
res = f_mkfs(NORFLASH,0,4096);//4096:每簇占用字节数
if(res == RES_OK)
{6 W- {* V2 E3 Y/ a! R) a/ J
UART0SendStr("format filesystem successed!\n\r");* a3 ]$ x* J) ^: X
}
else4 C, M* R, W6 B+ g2 U( ^" U
{
UART0SendStr("format filesystem failed!\n\r");
}
res = f_mount(NORFLASH,NULL);
/////////////////////////////////////////////////////////////////////////////////////////////////
res = f_mount(NORFLASH,&fs);% D1 I! E2 O. N
5 b7 P; M1 U3 d0 r' V
/*写文件测试*/( F% Z5 t/ B8 ]0 q
UART0SendStr("write file test......\n\r");1 p0 i5 V! O8 e/ [
res = f_open(&FileObject, "test.txt", FA_CREATE_ALWAYS | FA_WRITE);! r7 t! W- X. j& [& S5 I
。。。$ F6 p+ d2 ?5 e* C; W/ E
}
回复:STM32+SDIO+FATFS实例
顶起!
回复:STM32+SDIO+FATFS实例
回复:STM32+SDIO+FATFS实例
RE
回复:STM32+SDIO+FATFS实例
回复:STM32+SDIO+FATFS实例
回复:STM32+SDIO+FATFS实例
回复:STM32+SDIO+FATFS实例
RE:STM32+SDIO+FATFS实例
RE:STM32+SDIO+FATFS实例