当前位置: 首页 > wzjs >正文

深圳品牌网站制作报价天津百度推广开户

深圳品牌网站制作报价,天津百度推广开户,本地电脑如何做网站,上海专业建网站公司概述 FATFS文件系统可以挂载SD卡也可以挂载FLASH eMMC等设备 SD卡需要格式化为FAT32模式 块大小默认即可 移植 SD卡 SD卡扇区大小是 512B SD卡 SDIO模式 可以直接在cubeMX里一键设置 先设置好SD卡的设置 这个是选择支持中文 其余是默认 这个是检测引脚可以留空 当SD卡插入拔出…

概述

FATFS文件系统可以挂载SD卡也可以挂载FLASH eMMC等设备

SD卡需要格式化为FAT32模式 块大小默认即可

image-20250401131154037

移植

SD卡

SD卡扇区大小是 512B

SD卡 SDIO模式 可以直接在cubeMX里一键设置

先设置好SD卡的设置

这个是选择支持中文 其余是默认

image-20250401144906909

这个是检测引脚可以留空

当SD卡插入拔出时会引起检测脚的变化

image-20250401144931735

FLASH

FLASH接入FATFS需要自行修改接口,选用自定义模式

建议配合USB MSC功能使用

cubeMX配置

使用自定义模式,将扇区大小改为从512到4096都可

image-20250406164521203

设置内容

全在cubeMX生成的user_diskio.c

先导入头文件和设置扇区大小

image-20250406165626285

需要设置的APIs

全在cubeMX生成的user_diskio.c

初始化
描述名称功能
BYTE(uint8_t)pdrv磁盘编号
DSTATUS输出错误码
DSTATUS USER_initialize (BYTE pdrv)

成功返回RES_OK 失败返回RES_ERROR

根据自己初始化写入函数

例子

这里不需要初始化直接返回成功即可

DSTATUS USER_initialize(BYTE pdrv /* Physical drive nmuber to identify the drive */
)
{/* USER CODE BEGIN INIT */UNUSED(pdrv);return RES_OK;/* USER CODE END INIT */
}
获取磁盘状态
描述名称功能
BYTE(uint8_t)pdrv磁盘编号
DSTATUS输出错误码
DSTATUS USER_status(BYTE pdrv)

成功返回RES_OK 失败返回RES_ERROR

不使用返回即可

例子

DSTATUS USER_status(BYTE pdrv /* Physical drive number to identify the drive */
)
{/* USER CODE BEGIN STATUS */UNUSED(pdrv);return RES_OK;/* USER CODE END STATUS */
}
读取扇区
描述名称功能
BYTE(uint8_t)pdrv磁盘编号
BYTE(uint8_t)buff缓冲区
DWORDsector扇区编号
UINT (uint32_t)count扇区数量
DSTATUS输出错误码
DRESULT USER_read(BYTE pdrv,BYTE *buff,DWORD sector,UINT count)

示例

这个函数 W25Qxx_Read_Data输入的是FLASH的地址和byte数量,因此要乘上扇区大小

DRESULT USER_read(BYTE pdrv,    /* Physical drive nmuber to identify the drive */BYTE *buff,   /* Data buffer to store read data */DWORD sector, /* Sector address in LBA */UINT count    /* Number of sectors to read */
)
{/* USER CODE BEGIN READ */W25Qxx_Read_Data(sector * USER_SECTOR_SIZE, buff, count * USER_SECTOR_SIZE);return RES_OK;/* USER CODE END READ */
}
写入扇区
描述名称功能
BYTE(uint8_t)pdrv磁盘编号
BYTE(uint8_t)buff缓冲区
DWORDsector扇区编号
UINT (uint32_t)count扇区数量
DSTATUS输出错误码
DRESULT USER_write(BYTE pdrv,const BYTE *buff,DWORD sector,UINT count)

示例

这个函数W25Qxx_Write 输入的是FLASH的地址和byte数量,因此要乘上扇区大小

DRESULT USER_write(BYTE pdrv,        /* Physical drive nmuber to identify the drive */const BYTE *buff, /* Data to be written */DWORD sector,     /* Sector address in LBA */UINT count        /* Number of sectors to write */
)
{/* USER CODE BEGIN WRITE *//* USER CODE HERE */W25Qxx_Write(sector * USER_SECTOR_SIZE, (uint8_t *)buff, count * USER_SECTOR_SIZE, 0);return RES_OK;/* USER CODE END WRITE */
}
控制操作
描述名称功能
BYTE(uint8_t)pdrv磁盘编号
BYTE(uint8_t)cmd命令
void *buff缓冲区
DSTATUS输出错误码
DRESULT USER_ioctl(BYTE pdrv,BYTE cmd,void *buff)

必须要响应的命令

描述功能
GET_SECTOR_COUNT扇区数量
GET_SECTOR_SIZE扇区大小 单位byte
GET_BLOCK_SIZE区块大小

例子

使用W25Q128 16MB

扇区大小为4096=4KB

扇区数为 4096 这里写4095

区块直接写1 即可

DRESULT USER_ioctl(BYTE pdrv, /* Physical drive nmuber (0..) */BYTE cmd,  /* Control code */void *buff /* Buffer to send/receive control data */
)
{/* USER CODE BEGIN IOCTL */DRESULT res = RES_OK;switch (cmd){case CTRL_SYNC:res = RES_OK;break;case CTRL_TRIM:res = RES_OK;break;case GET_SECTOR_COUNT:*(DWORD *)buff = 4095;break;case GET_SECTOR_SIZE:*(DWORD *)buff = USER_SECTOR_SIZE;break;case GET_BLOCK_SIZE:*(DWORD *)buff = 1;break;}return res;/* USER CODE END IOCTL */
}

APIs

地址问题

根据初始化顺序,驱动器的根地址分别为0:/ 1:/

比如这个例子里 SD卡的根地址是0:/ USER(可以设为FLASH等) 地址为1:/

image-20250401151430074

挂载

输入输出
描述名称功能
FATFS*fs句柄
const TCHAR*path地址
BYTEopt是否立即加载(一般写1)
FRESULT输出错误码
FRESULT f_mount (FATFS* fs,const TCHAR* path,BYTE opt)

挂载例子

f_mount(&hFatfs, "0:/", 1);

打开文件

输入输出
描述名称功能
FIL*fp文件
const TCHAR*path地址
BYTEmode模式
FRESULT输出错误码
mode
描述功能
FA_READ只读
FA_WRITE只写
FA_OPEN_EXISTING如果文件存在,则打开;否则打开失败
FA_CREATE_NEW创建一个文件,如果文件存在,则创建失败
FA_CREATE_ALWAYS创建一个文件,如果文件存在,则覆盖原文件
FA_OPEN_ALWAYS如果文件存在,则打开,如果不存在则创建一个文件并打开

可以输入 FA_READ | FA_WRITE 来使用读写

FRESULT f_open (FIL* fp,const TCHAR* path,BYTE mode)

打开后光标指向开头

关闭文件

输入输出
描述名称功能
FIL*fp文件
FRESULT输出错误码
FRESULT f_close (FIL* fp)

读文件

输入输出
描述名称功能
FIL*fp文件
void*buff缓冲区
UINTbtr操作数量
UINT*br已操作数量
FRESULT输出错误码
FRESULT f_read (FIL* fp,void* buff,UINT btr,UINT* br)

会从光标处开始读取 指针自增

写文件

输入输出
描述名称功能
FIL*fp文件
void*buff缓冲区
UINTbtr操作数量
UINT*br已操作数量
FRESULT输出错误码
FRESULT f_write (FIL* fp,const void* buff,UINT btw,UINT* bw)

会从光标处开始写入 指针自增

打印到文件

输入输出
描述名称功能
FIL*fp文件
const TCHAR*fmt规则格式串
.........
int输出写入数量
int f_printf (FIL* fp,const TCHAR* fmt,...)

会从光标处开始写入 指针自增

获取文件大小

输入输出
描述名称功能
FIL*fp文件
FSIZE_t输出大小
f_size(fp)

改变光标位置

输入输出
描述名称功能
FIL*fp文件
FSIZE_tofs从顶部开始的偏移
FRESULT输出错误码
FRESULT f_lseek (FIL* fp,FSIZE_t ofs)

删除文件

输入输出
描述名称功能
const TCHAR*path路径
FRESULT输出错误码
FRESULT f_unlink (const TCHAR* path)

检查文件是否存在

输入输出
描述名称功能
const TCHAR*path路径
FILINFO*fno信息
FRESULT输出不存在FR_NO_FILE,存在FR_OK
FRESULT f_stat (const TCHAR* path,FILINFO* fno)
http://www.dtcms.com/wzjs/173569.html

相关文章:

  • 一个网站建设花了10万元2024年4月新冠疫情结束了吗
  • kali做钓鱼网站国内最新新闻事件今天
  • 最新仿5173游戏装备交易网站 游戏币交易平台源码整合支付接口线上培训机构排名前十
  • 网站建设捌金手指下拉二七安徽百度seo公司
  • 本科毕业设计代做网站seo点击软件排名优化
  • 菏泽网站制作大型网站建设
  • 洛阳做网站公司电话杭州网站优化公司哪家好
  • 佛山微网站建设哪家专业百度推广登陆入口官网
  • 标准网站建设公司泉州网站建设优化
  • 做网站 怎么推广下载班级优化大师app
  • 做网站必须要dreameverbt兔子磁力搜索引擎最新版
  • 企业网站的制作哪家好北京最新疫情最新消息
  • 贵州网站建设系统怎么网上推广自己的产品
  • 适合个人站长的网站有哪些免费推广广告链接
  • 网站无缝背景网络营销软文范例500字
  • 徐州建设企业网站百度点击快速排名
  • 海尔网站建设水平网络营销论文毕业论文
  • unity做网站常见的网站推广方法有哪些
  • 西安网站建设-中国互联百度客服人工电话多少
  • 二级域名网站建设规范seo实战密码第三版
  • 淘宝的网站怎么做微博推广平台
  • 网站开发需要甲方提供什么新网站seo
  • 织梦html网站地图新浪网今日乌鲁木齐新闻
  • 3d网站怎么做线上推广策略
  • wordpress 插件 图片seo好seo
  • 做B2B网站需要办理什么上海网络推广营销策划方案
  • 建立企业网站的技能seo外链怎么做能看到效果
  • wordpress 标签设置北京seo服务行者
  • 做响应式网站制作北京网站seowyhseo
  • 做网站要买数据库博客推广的方法与技巧