2025-11-08 06:18:03
f_read是FATFS文件系统里负责读文件的函数。用户想读txt文件时,先要告诉FATFS要读哪个文件,接着告诉它从第几页开始读,再告诉它最多读多少字。FATFS收到这三个数字后,就负责从存储设备里把指定数量的字传给程序。如果读成功,返回的字数就是实际读到的;如果文件没找到或读不到,就返回负数。
为啥要这样设计呢?因为FATFS需要知道用户读文件的三个关键参数:目标文件名、起始位置和读取长度。就像去图书馆借书,得先说清要哪本书,从哪一页借,借多少页。FATFS的文档里写着,f_read的参数包括文件句柄、起始字节和读取字节数,返回值是实际读取的字节数或错误码。比如用户用f_open打开文件后,得到的句柄就是f_read的第一个参数。存储设备每次最多能一次性读64KB,所以f_read的第三个参数不能超过这个值。如果用户要读1000字,FATFS就分两次把64KB和36KB的数据传过来。这样设计能保证程序既不会读太多数据浪费内存,也不会读太少导致多次调用。但要注意的是,如果文件总字数比用户要读的少,FATFS就会直接返回实际字数。比如读1000字,但文件只有500字,实际返回500。这种机制在嵌入式系统中很常见,像STM32的FATFS库就严格遵循这个规则。
本题链接: