- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-04-30 07:46:22
荣誉版主
- 积分
- 2319
|
文件系统 | znFAT | STC32位8051运行代码@STC32G12K128
移植:
1.将<znFAT.c> <deviceio.c>加入到项目.
2.修改头文件<mytype.h>数据类型,使其符合我们的编绎器
3.跟据自身需求自建三个函数,用来连接znFAT和存储介质, 将以下三个函数分别替换代原文<deviceio.c>中的 SD1_Init(),SD1_Write_Sector(),SD1_Read_Sector(). 原文别的地方不要改.
示例函数代码如下: (W25Q128)
UINT8 Disk_Init(void) //znFAT初始化磁盘时会调用此函数
{
// w25qxx_init(); //已在main函数初始化
return 0;
}
UINT8 Disk_Write_Sector(UINT32 addr,UINT8 *buffer) //写扇区 addr:扇区编号 buffer: buf指针
{
return SPI_Write_Nbytes(addr*512,buffer,512);
}
UINT8 Disk_Read_Sector(UINT32 addr,UINT8 *buffer) //读扇区 addr:扇区编号 buffer: buf指针
{
SPI_Read_Nbytes(addr*512,buffer,512);
return 0;
}
4.修改znFAT配制文件<config.h>,要使用哪些功能,就打开对应的宏。 注: 因<config.h>与STC库文件同名,为了好区别, 例子中把"config.h"改名为 "znFAT_config.h".
使用: 按以下顺序启动znFAT
1. znFAT_Device_Init(); //存储设备初始化,底层驱动接口
2. znFAT_Select_Device(0,&myFAT); //选择设备 (注: 只有一个设备,此处也不可省略)
3. znFAT_Init()) //文件系统初始化,只有初始化时功,才有下一步,否则就是不能识别,重新格式化或许能解决
4. 文件操作
执行结果截图:
容易入坑的地方:
1.哪怕只有一个设备,也必须执行znFAT_Select_Device(). 否则,代码飞到不可以运行区域, 然后就重启了.
2.格式化时间一般都比较长, 要么在开看门狗之前格式化, 要么就是找到格式化原码的关键循环点, 在那里喂狗, 否则肯定会重启的
2023/11/11更新代码, 完善了一下 W25QXX 的驱动, 之前从别的项目复制过来, 不是很匹配
例子代码:
znFAT_STC32G12K128.rar
(544.39 KB, 下载次数: 404)
|
|