当前位置: 首页 > 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/470603.html

相关文章:

  • 网站建设要钱吗惠州seo代理商
  • 企业彩铃制作网站关键词优化怎么优化
  • 平面设计网站中文友情链接怎么设置
  • 网站每个页面关键词都一样网站服务器是什么意思
  • 做seo哪些网站会好点深圳全网推广
  • 做花语的网站搜seo
  • 做电子商务网站 除了域名 网页设计 还有服务器 和网站空间杭州百家号优化
  • 建设人大网站seo初级入门教程
  • 西乡做网站公司免费推广途径与原因
  • 个人网站备案后内容可以改么域名查询 站长查询
  • 网站建设江西有多少家一呼百应推广平台
  • 阿里巴巴电子商务网站app推广注册从哪里接单
  • 上海单位名称大全seo技术培训泰州
  • 专业做网站和小程序谷歌排名
  • 影视公司和传媒公司的区别西安seo哪家好
  • 浙江响应式网站建设公司谷歌推广哪家好
  • 怎么做一网站首页产品推广方式有哪些
  • 个人网站 可以做淘宝客吗品牌策划书
  • 黑龙江省建设厅的网站首页点金推广优化公司
  • 一个外国人做汉字网站福州百度推广优化排名
  • 一个完整的网站制作流程厦门seo代运营
  • 自已建外贸网站专业网站优化公司
  • 做的网站百度排名没有图片显示网络营销常用工具
  • 网站分站原理怎么制作一个网站首页
  • 青岛html5网站制作厦门seo推广公司
  • 做特色创意菜品的网站网上宣传广告怎么做
  • u盘做网站seo免费诊断电话
  • 唐山制作网站的公司小学生简短小新闻
  • 网站由哪儿三部分组成网络营销的核心是用户吗
  • 政府门户网站建设意见2023新一轮病毒叫什么名字