分享在STM32F103VE的片内Flash(512K)使用FatFS系统系统。 f6 b9 J9 H+ y
! y+ c$ D* ]6 {0 S
在我所做的测量仪器需要长年运行,并且保存数据和查寻数据,刚开始我是把数据按一定格式存放在片内Flash中的,但是由于数据种类多,还需要查找历史数据和参数,有些复杂,做的并不好。后来想用文件系统,据说FatFS挺不错的,就在开发板上学习了一下,使用的NAND Flash。
6 ^1 L2 e6 d" a3 j 暂时仪器板子上没有放NAND Flash,所以就先在片内Flash上使用FatFS,这个搞了两天,终于弄出来了,和大家分享,源码在附件中。6 }( ]0 y- u" d# s+ o# i
; l* Y7 H8 W3 A5 t/ Y思路是在STM32片内Flash最后100页(可宏定义设置区间和大小)使用FatFS, 模拟NAND Flash把片内Flash做为一个zone,每页做为一块(block),每页分成4份(每份为一段sector, 512字节)。
8 A* C2 [) v! w- x" q. }
1 C* M' b3 s- A% T( R+ k; n' R应用示例:
8 L/ S# K0 W+ k# h y % t, e$ P+ c" v, Y. x5 P
-
8 {# V2 f& U! h; z. o9 m: x3 K - FATFS fs;
5 c3 J! j$ S8 U, u0 V; X1 l - FIL file;
7 \9 A: e- z9 M: D* X: x J" Z - FRESULT res;
$ A) D% i: |4 v7 Q - char array[512]={0}, *parray = array;
8 R3 P/ }7 `$ v - ; R; j: v2 X9 s' _( @0 I
- res = f_mount(0, &fs); . z& g6 G$ Y: N, t2 {$ `. ~
- res = f_mkfs(0 , 0, _MAX_SS); 2 Z3 Z* a/ w5 a( O" a0 i
- res = f_open(&file, "data.txt", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);
- i z6 ?) k/ ]$ l - f_printf(&file, "%s\n", "Success"); /* "Success" */
5 k& G7 U. \1 L9 k! E2 \9 z$ P - parray = f_gets(parray , 8, &file);
T5 N2 ~3 W" B/ U0 z - LCMTextOutExt( 0, 0, parray ); 9 {* M+ Z* W. J" @
- f_close(&file);
/ Y# t5 o1 d' g' q - f_mount(0, NULL);
" g; E0 [ n& {$ i) b4 ~ a
* y. e) _ o1 A5 F- P复制代码 |
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系统系统