你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

FATFS到f_mount()卡死,求助,用的野火文件

[复制链接]
Beyond the Star 提问时间:2024-10-18 18:03 / 未解决
函数在使用f_mkfs初始化后,使用f_mount重新挂载时使用NULL取消挂载后,再重新挂载提示0x0C也就是无文件系统,调试进函数发现是在如下函数中返回了2导致的


static
BYTE check_fs (        /* 0:Valid FAT-BS, 1:Valid BS but not FAT, 2:Not a BS, 3isk error */
        FATFS* fs,        /* File system object */
        DWORD sect        /* Sector# (lba) to check if it is an FAT boot record or not */
)
{
        fs->wflag = 0; fs->winsect = 0xFFFFFFFF;        /* Invaidate window */
        if (move_window(fs, sect) != FR_OK)                        /* Load boot record */
                return 3;

        if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55)        /* Check boot record signature (always placed at offset 510 even if the sector size is >512) */
                return 2;

        if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146)                /* Check "FAT" string */
                return 0;
        if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146)        /* Check "FAT" string */
                return 0;

        return 1;
}

而这个函数则是提示引导签名并不正确,求助。
收藏 评论1 发布时间:2024-10-18 18:03

举报

1个回答
果宝 回答时间:2024-10-28 14:44:25

需要调用f_mkfs make一次,才能把FATFS的文件头写到memory。再check的时候才能正确。但前提是diskio里的驱动必须是正确的。

以下宏也要开启

define FF_USE_MKFS 1

扇区大小按照实际介质参数设置(FLASH一般是4k)

define FF_MIN_SS 4096 //512

define FF_MAX_SS 4096 //512

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版