完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这里使用了开发板上的TF卡接口,用于在TF卡上建立Fatfs文件系统,并新建一个文件,在文件写内容相应内容。
开发板插上TF卡,这个座不是常见的,触点没有在板子侧,而是上侧。 再来看程序,与所有的程序一样,首先就是对板子芯片的初始化。 查看原代码 CPU_CACHE_Enable();HAL_Init();SystemClock_Config(); 初始化LED1,对Fatfs文件系统出错进行指示。 查看原代码 BSP_LED_Init(LED1); 由于使用了FreeRTOS,首先是新建一个StartThread任务。 这个程序很简单,只有这一个任务,任务中,先是连接到SD卡设备。 查看原代码 FATFS_LinkDriver(&SD_Driver, SDPath) 挂载文件系统 查看原代码
这里的SDFatFs是一个FATFS类型的结构体。 |
|
相关推荐
|
|
成员有:
查看原代码 typedef struct { union{ UINT d32[_MAX_SS/4]; /* Force 32bits alignement */ BYTE d8[_MAX_SS]; /* Disk access window for Directory, FAT (and file data at tiny cfg) */ }win; BYTE fs_type; /* FAT sub-type (0:Not mounted) */ BYTE drv; /* Physical drive number */ BYTE csize; /* Sectors per cluster (1,2,4...128) */ BYTE n_fats; /* Number of FAT copies (1 or 2) */ BYTE wflag; /* win[] flag (b0:dirty) */ BYTE fsi_flag; /* FSINFO flags (b7:disabled, b0:dirty) */ WORD id; /* File system mount ID */ WORD n_rootdir; /* Number of root directory entries (FAT12/16) */ #if _MAX_SS != _MIN_SS WORD ssize; /* Bytes per sector (512, 1024, 2048 or 4096) */ #endif #if _FS_REENTRANT _SYNC_t sobj; /* Identifier of sync object */ #endif #if !_FS_READONLY DWORD last_clust; /* Last allocated cluster */ DWORD free_clust; /* Number of free clusters */ #endif #if _FS_RPATH DWORD cdir; /* Current directory start cluster (0:root) */ #endif DWORD n_fatent; /* Number of FAT entries, = number of clusters + 2 */ DWORD fsize; /* Sectors per FAT */ DWORD volbase; /* Volume start sector */ DWORD fatbase; /* FAT start sector */ DWORD dirbase; /* Root directory start sector (FAT32:Cluster#) */ DWORD database; /* Data start sector */ DWORD winsect; /* Current sector appearing in the win[] */ } FATFS; |
|
|
|
|
|
格式化TF卡。
查看原代码 f_mkfs((TCHAR const*)SDPath, 0, 0) 新建一个文件,文件名为STM32.TXT,这里使用了FA_CREATE_ALWAYS参数,实际上是打开一个文件,在文件不存在时新建。 查看原代码 f_open(&MyFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRITE) 文件中写入相应内容,写入的内容是wtext指针所指向的内容,而wtest是一个数组。 查看原代码 uint8_t wtext[] = "This is STM32 working with FatFs"; 写入完成后一定要关闭文件,写入的内容才会真的写入,若不关闭,是不能写入的。 查看原代码 f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten); f_close(&MyFile); 最后又打开了文件并读取内容,进行对比,看文件是不是写入成功了。 查看原代码 f_read(&MyFile, rtext, sizeof(rtext), (UINT*)&bytesread); 那么将TF卡拔下来,看一下TF卡上的内容。 |
|
|
|
|
|
【FireBeetle 2 ESP32-S3开发板体验】官方Arduino例程学习
698 浏览 0 评论
【FireBeetle 2 ESP32-S3开发板体验】ESP-IDF搭建北斗二代模块进行北斗RDSS通信
772 浏览 0 评论
【FireBeetle 2 ESP32-S3开发板体验】基于GDI接口的高清IPS屏的LVGL使用(方法通用所有支持接口的屏)
2433 浏览 1 评论
【FireBeetle 2 ESP32-S3开发板体验】基于ESP32S3+SPIFFS+AsyncWebServer+SQLite3的硬件地址归属品牌(厂商)查询工具
892 浏览 1 评论
【FireBeetle 2 ESP32-S3开发板体验】蓝牙BLE控制LED
785 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2023-8-26 05:40 , Processed in 0.397073 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:粤 B2-20160233 工商网监 湘ICP备2023018690号