分享在STM32F103VE的片内Flash(512K)使用FatFS系统系统。; V/ A: g' ?$ m1 a+ Y% g% R' V
$ a. P9 i6 Z/ _1 ^* r) i6 L3 ] 在我所做的测量仪器需要长年运行,并且保存数据和查寻数据,刚开始我是把数据按一定格式存放在片内Flash中的,但是由于数据种类多,还需要查找历史数据和参数,有些复杂,做的并不好。后来想用文件系统,据说FatFS挺不错的,就在开发板上学习了一下,使用的NAND Flash。 A9 a5 W; r" ^' i9 B4 p
暂时仪器板子上没有放NAND Flash,所以就先在片内Flash上使用FatFS,这个搞了两天,终于弄出来了,和大家分享,源码在附件中。/ q w& h4 L- j1 ?3 ?$ }
( v9 j# o: o: l8 Y& S
思路是在STM32片内Flash最后100页(可宏定义设置区间和大小)使用FatFS, 模拟NAND Flash把片内Flash做为一个zone,每页做为一块(block),每页分成4份(每份为一段sector, 512字节)。6 |4 y) M3 F3 X4 l P' {
5 K: g! j9 a# s7 q/ C
应用示例:
" {. i# q, B! x v
5 G0 ]8 x' k+ G4 J% V-
0 p3 t2 l. m! J) w' x - FATFS fs; / ?- x$ e5 v i. V
- FIL file; $ ]5 c5 |8 M; L) C, J3 T
- FRESULT res;
$ M3 F+ Q: b& h* I - char array[512]={0}, *parray = array;
- q6 m8 Z+ I' h2 b% ` -
! o; {& i3 c9 D) F0 ~ - res = f_mount(0, &fs); $ B* J8 c2 d4 E0 v
- res = f_mkfs(0 , 0, _MAX_SS); 1 y* i/ B8 ~$ |2 a( ^0 w4 q
- res = f_open(&file, "data.txt", FA_OPEN_ALWAYS | FA_WRITE | FA_READ); 3 |9 e) Y z1 S5 r
- f_printf(&file, "%s\n", "Success"); /* "Success" */
7 G$ U7 t2 n- e0 E8 r$ [ - parray = f_gets(parray , 8, &file);
& i3 P# y8 p& R' P - LCMTextOutExt( 0, 0, parray );
& u4 I( }; G" R/ w) B - f_close(&file); ) L _& {( u! o. z
- f_mount(0, NULL);
$ J1 h x, ~) C' }
. a" q/ f w9 j复制代码 |
RE:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
RE:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
RE:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
RE:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
RE:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
RE:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统
回复:【MCU实战经验】STM32F103VE的片内Flash(512K)使用FatFS系统系统