OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5115|回复: 2

STM32H750移植Fatfs文件系统中文文件异常

[复制链接]

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-12-13
在线时间
15 小时
发表于 2022-5-27 22:45:23 | 显示全部楼层 |阅读模式
1金钱
STM32H750 使用 STM32CubeMx 生成的代码,编写扫描SD卡的文件名测试程序时,英文可以显示长文件名,含有中文的只能显示12字节的短文件名。其中测试程序在内部128k的fash,但中文编码CC9036文件是存储在外部spi flash。SD卡使用的是SD2。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-12-13
在线时间
15 小时
 楼主| 发表于 2022-5-27 22:46:33 | 显示全部楼层
文件名异常打印信息。
微信图片_20220527223923.png
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-12-13
在线时间
15 小时
 楼主| 发表于 2022-5-27 22:51:54 | 显示全部楼层
/*
测试程序
*/
/* File information structure (FILINFO) */

typedef struct {
        FSIZE_t        fsize;                        /* File size */
        WORD        fdate;                        /* Modified date */
        WORD        ftime;                        /* Modified time */
        BYTE        fattrib;                /* File attribute */
#if _USE_LFN != 0
        TCHAR        altname[13];                        /* Alternative file name */
        TCHAR        fname[_MAX_LFN + 1];        /* Primary file name */
#else
        TCHAR        fname[13];                /* File name */
#endif
} FILINFO;

#define MUSIC_DIR                        "0:/music"
FILINFO         f_info  ;                        //文件信息
DIR                         d_music ;//&music;                //文件夹信息

void lfname_test(void)
{
        uint16_t count =0;
        char                         *fn;
        FRESULT   res;
       
        FILINFO         *fil_info  = &f_info;                        //文件信息
        DIR                         *dir_music = &d_music;        //&music;                //文件夹信息
       
       
        res = f_opendir(dir_music,MUSIC_DIR);
        if(res != FR_OK)
        {
                printf("open %s fail err %d \r\n",MUSIC_DIR,res);
                return ;
        }
        do
        {
                res = f_readdir(dir_music,fil_info);
                if(res != FR_OK || fil_info->fname[0] == 0){  //读完
                        break;
                }
                else if(fil_info->fname[0] == '.')             //隐性文件
                {
                        continue;
                }
                else if(fil_info->fattrib & AM_DIR)                                                //文件夹
                {
                        continue;
                }
                else                                                                                                                                                                         //打印文件名
                {
                                printf("%d %s \r\n",++count,fil_info->fname);
                }       
               
        }while(1);

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 18:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表