OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
楼主: 葱花鱼

miniSTM32 移植FATFS 学习过程持续更新......

[复制链接]

3

主题

123

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
364
金钱
364
注册时间
2012-4-30
在线时间
11 小时
发表于 2012-6-11 20:07:04 | 显示全部楼层
真的勇士,敢于直面惨淡的warning,敢于正视淋漓的error.
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2012-6-25 22:37:25 | 显示全部楼层
回复【51楼】Lkingz:
---------------------------------
这个工程文件不支持长文件名,对长文件名的支持可以自己添加的。
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2012-1-12
在线时间
1 小时
发表于 2012-6-26 13:26:51 | 显示全部楼层
感谢楼主的程序,提供一下我的测试数据
       单块写:测试对象txt文件,大小3.9MB,数组长度512,默认的18MHz的SPI时钟
Canon MMC-16M 26S
KingstonSDHC calss4 4G(JP) 25S
SanDisk ExtremeIII class6 4G 18S 偶尔会有文件没有写满就结束了,比如本来写3.9M的只写了几百K的数据
变换写入的测试数据值发现没有出现错误,大致写速度在200KB/s左右,读速度应该更快
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2012-7-5
在线时间
0 小时
发表于 2012-7-5 10:36:47 | 显示全部楼层
好贴要顶,楼主太强大了,很有学习意义,谢谢~
回复 支持 反对

使用道具 举报

5

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2012-7-11
在线时间
81 小时
发表于 2012-7-11 22:57:19 | 显示全部楼层
回复【6楼】葱花鱼:
---------------------------------
楼主,请问如何在根目录下面读取一个指定的TXT文件里面的内容啊?谢谢
回复 支持 反对

使用道具 举报

5

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2012-7-11
在线时间
81 小时
发表于 2012-7-11 22:58:15 | 显示全部楼层
回复【27楼】葱花鱼:
---------------------------------
回复【楼主位】葱花鱼:
---------------------------------
楼主,请问如何在根目录下面读取一个指定的TXT文件里面的内容啊?谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-7-12 00:57:19 | 显示全部楼层
f_open
然后f_read
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2012-7-11
在线时间
81 小时
发表于 2012-7-12 08:56:32 | 显示全部楼层
回复【57楼】正点原子:
---------------------------------
比如:我要读取0:/20120711/101109.txt文件里面的内容
我是不是这样调用就可以了Read_file("0:/20120711/","101109")?谢谢!
回复 支持 反对

使用道具 举报

5

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2012-7-11
在线时间
81 小时
发表于 2012-7-12 08:58:15 | 显示全部楼层
回复【58楼】lkmtdkjplg:
---------------------------------
//读文件内数据
void Read_file(char *dir_path,char *file_path)
{
int i;
res=f_opendir(&dir,(TCHAR*)dir_path);
res = f_open(&fsrc,(TCHAR *)file_path, FA_OPEN_EXISTING | FA_READ);
printf("\nReceive data: \n");
for (;;) { 
        res = f_read(&fsrc, buffer, sizeof(buffer), &br); 
        if (res || br == 0) break;   // error or eof 
        for( i = 0; i < br; ++i ) 
            printf("%c",buffer);
printf("\n");  
    } 
LCD_ShowString(17,70,"Read  data over!");
f_close(&fsrc);
}
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2012-7-12 09:22:54 | 显示全部楼层
还没测试 ,不过非常感谢楼主的分享。
1-1
回复 支持 反对

使用道具 举报

5

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
302
金钱
302
注册时间
2012-7-11
在线时间
81 小时
发表于 2012-7-14 09:30:21 | 显示全部楼层
回复【60楼】mygod:
---------------------------------
楼主,麻烦问一下如何读取根目录下一个TXT文件的内容啊?谢谢
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2012-7-23 10:59:29 | 显示全部楼层
回复【61楼】lkmtdkjplg:
---------------------------------
你可以先扫描根目录下是否有需要显示的TXT文件,如果存在这个文件,先fopen打开这个文件,然后fread这个文件,freaad这个函数会将读取的数据存储在一个自己制定的缓冲区中,然后利用串口循环发送即可。

//扫描文件夹下所有文件并显示
FRESULT scan_files (char* path)
{
    FRESULT res;
    FILINFO fno;
    DIR dir;
    int i,j,k;
    char *fn;

 #if _USE_LFN
    static char lfn[_MAX_LFN * (_DF1S ? 2: 1) + 1];
    fno.lfname = lfn;
    fno.lfsize = sizeof(lfn);
 #endif
 
    res = f_opendir(&dir, path);
    if (res == FR_OK) {
        i = strlen(path);
        for (;;) {
            res = f_readdir(&dir, &fno);
            if (res != FR_OK || fno.fname[0] == 0) break;
            if (fno.fname[0] == '.') continue;

   #if _USE_LFN
            fn = *fno.lfname ? fno.lfname: fno.fname;
   #else
            fn = fno.fname;
   #endif

            if (fno.fattrib & AM_DIR) {
                LCD_ShowString(17,90,(u8 *)path);
                res = scan_files(path);
                if (res != FR_OK) break;
                path = 0;
            } else {
    LCD_ShowString(17,90,(u8 *)path);
    LCD_ShowString(17+j*100,110+k*20,(u8 *)fn);
    j++;
    if(j==2){
      k++;
     j=0;
    } 
            }
        }
    }
    return res;
}
//读文件内数据
void Read_file(char *dir_path,char *file_path)
{
int i;
res=f_opendir(&dir,(TCHAR*)dir_path);
res = f_open(&fsrc,(TCHAR *)file_path, FA_OPEN_EXISTING | FA_READ);
printf("\nReceive data: \n");
for (;;) { 
        res = f_read(&fsrc, buffer, sizeof(buffer), &br); 
        if (res || br == 0) break;   // error or eof 
        for( i = 0; i < br; ++i ) 
            printf("%c",buffer);
printf("\n");  
    } 
LCD_ShowString(17,70,"Read  data over!");
f_close(&fsrc);
}


以上两段程序,你可以参考下!
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

8

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2012-5-26
在线时间
0 小时
发表于 2012-7-23 20:15:05 | 显示全部楼层
好东西。
回复 支持 反对

使用道具 举报

0

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2012-4-25
在线时间
10 小时
发表于 2012-8-9 10:10:43 | 显示全部楼层
不错。。。。。。。。。。。。
QQ:747764222?可接项目 和 毕设等
? 可以出售各种LED灯,以及控制方案。
? ? LED灯已经出口到全球各地,控制方案也很有经验。
回复 支持 反对

使用道具 举报

3

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2012-8-11
在线时间
27 小时
发表于 2012-8-11 22:18:42 | 显示全部楼层
顶,谢谢了
回复 支持 反对

使用道具 举报

27

主题

308

帖子

1

精华

高级会员

Rank: 4

积分
774
金钱
774
注册时间
2012-6-19
在线时间
19 小时
发表于 2012-8-16 16:10:06 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2012-8-19 19:06:50 | 显示全部楼层
我是伸手党,哈哈哈
努力,前进。
回复 支持 反对

使用道具 举报

3

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2012-8-11
在线时间
27 小时
发表于 2012-8-20 11:15:55 | 显示全部楼层
真是好贴啊
回复 支持 反对

使用道具 举报

74

主题

209

帖子

0

精华

高级会员

Rank: 4

积分
919
金钱
919
注册时间
2012-1-14
在线时间
5 小时
发表于 2012-8-24 10:46:23 | 显示全部楼层
呵呵,激动呀,持续学习中!!谢谢楼主
回复 支持 反对

使用道具 举报

10

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2012-8-13
在线时间
0 小时
发表于 2012-8-25 16:58:18 | 显示全部楼层
弱弱的问一声楼主,这个如果以读写的方式创建一个文件,比如abc.txt,写入x(未知)个数据,然后又关闭文件。怎样再次打开文件然后在上次写的数据后面继续写数据?然后依次关闭-打开-写-关闭-打开-写……
奋斗的小鸟,不是愤怒的小鸟
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-25 19:16:57 | 显示全部楼层
回复【70楼】chyw12:
---------------------------------
有很多方法的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1860
金钱
1860
注册时间
2012-5-19
在线时间
286 小时
发表于 2012-8-29 15:59:17 | 显示全部楼层
好帖子哦
回复 支持 反对

使用道具 举报

57

主题

431

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
886
金钱
886
注册时间
2011-12-25
在线时间
12 小时
发表于 2012-8-30 15:48:09 | 显示全部楼层
MARK,,楼主。。我嫉妒你。。
很喜爱电子行业
回复 支持 反对

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2012-7-19
在线时间
0 小时
发表于 2012-8-31 14:40:16 | 显示全部楼层
太给力了,经典菜!
回复 支持 反对

使用道具 举报

10

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2011-1-15
在线时间
5 小时
发表于 2012-10-9 11:03:00 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

27

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2012-8-11
在线时间
0 小时
发表于 2012-10-9 15:12:42 | 显示全部楼层

厉害~~

回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-9-22
在线时间
3 小时
发表于 2012-10-10 19:45:13 | 显示全部楼层
 

/USART1DMA方式接收数据fficeffice" />

void USART_Receive_DMA(void){

       Free_Buff_No=1;                             

       MYDMA_Config(DMA1_Channel5,(u32)&USART1->DR,(u32)ReceiveBuffer0,200);//DMA1通道5,外设为串口1,存储器为SendBuff,长度5200.

       Set_DMA_ISR();

    USART1->CR3=1<<6;           //使能串口1DMA接收      

       MYDMA_Enable(DMA1_Channel5);//开始一次DMA接收      

}
按照《例说stm32》里边 208页 的DMA1各通道一览表 通道4才能发送给串口1     可是程序好像可以   这是什么情况 

回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2012-10-19 14:50:49 | 显示全部楼层
回复【77楼】zjcnzcl:
---------------------------------
DMA1的通道4对应USART1_TX,通道5对应USART1_RX。 通道5用于接收数据,通道4用于发送数据。
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2012-10-19 14:53:53 | 显示全部楼层
回复【70楼】chyw12:
---------------------------------
void Write_file(char *dir_path,char *file_path)
{
res=f_mount(0,&fs);                                                  // mount logical driver
#if _USE_LFN  //长文件名分配内存
        fno.lfname = Lfname;
        fno.lfsize = sizeof(Lfname);
    #endif   
res = f_opendir(&dir,(TCHAR*)dir_path);                         //open dir
if(res == FR_OK)
DbgOutputstr("Open Dir  is OK!\n");
res = f_open(&fsrc,(TCHAR *)file_path, FA_OPEN_ALWAYS | FA_WRITE); //open file
f_lseek(&fsrc,fsrc.fsize);  //移动指针  每次都移动到文件尾部
res=f_write(&fsrc,&WriteBuff,sizeof(WriteBuff),&bw);                //write data to file,number= sizeof(WriteBuff)
if(res == FR_OK)
DbgOutputstr("Write Data  is OK!\n");
f_close(&fsrc);
res=f_mount(0,NULL);                                     // umount logical driver
}


        f_lseek(&fsrc,fsrc.fsize); 实现写入时指向文件的末尾   具体使用方法可以参考 f_lseek()函数。
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

10

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2012-11-1
在线时间
29 小时
发表于 2012-11-7 16:32:33 | 显示全部楼层

不知道为什么   这个程序下到MINI板子上会出现 
* JLink Info: Could not measure total IR len. TDO is constant high.
**JLink Warning: No matching core found.
* JLink Info: Could not measure total IR len. TDO is constant high.
* JLink Info: Could not measure total IR len. TDO is constant high.
* JLink Info: Resetting target using RESET pin
* JLink Info: Halting CPU core

**JLink Warning: Received 0 as core Id.

等信息,导致下不进去,同时下板子上别的例程却可以,,有人知道为什么吗?
回复 支持 反对

使用道具 举报

10

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2012-11-1
在线时间
29 小时
发表于 2012-11-7 18:25:18 | 显示全部楼层
回复【80楼】ymbukn:
---------------------------------
原来是OPTION 没有设置好。。。
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2012-3-17
在线时间
1 小时
发表于 2012-11-25 00:35:09 | 显示全部楼层
请问楼主,为何我写在SD卡里的内容在电脑中用文本打开浏览时这样显示呢?如下图


回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2012-3-17
在线时间
1 小时
发表于 2012-11-25 00:41:29 | 显示全部楼层
哦哦,问题解决。原来是UlrtaEdit在捣蛋。用系统自带文本打开就是合适的。
回复 支持 反对

使用道具 举报

14

主题

164

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1860
金钱
1860
注册时间
2012-5-19
在线时间
286 小时
发表于 2012-11-28 13:41:39 | 显示全部楼层
看到这种帖子 我情不自禁的感觉到中国技术行业又进了一步。楼主强烈顶你
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-12-16
在线时间
0 小时
发表于 2013-1-1 23:17:22 | 显示全部楼层
崇拜!!
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2013-2-4 23:12:47 | 显示全部楼层
回复【81楼】ymbukn:
---------------------------------
呵呵  问题解决就好
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-2-5 23:09:55 | 显示全部楼层
回复【8楼】葱花鱼:
---------------------------------
使用例程发送跟接受都没有反应是怎么回事?
回复 支持 反对

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-2-5 23:11:26 | 显示全部楼层
回复【7楼】葱花鱼:
---------------------------------
我把ILI93xx.c换成最新版本的接受功能就不能用了,不大懂怎么一回事……
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
发表于 2013-2-7 20:21:20 | 显示全部楼层
为什么我白屏??我把你告诉的那个tft的驱动替换到你的那个里了 可是还是白屏。。。
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-19
在线时间
0 小时
发表于 2013-2-7 20:22:36 | 显示全部楼层
回复【47楼】张洋:
---------------------------------
问一下那个白屏问题解决了么??我的也是白屏
回复 支持 反对

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-2-17 16:52:58 | 显示全部楼层
有没有人在下载上面的第二个个例程不能正常工作的?我出现了只能创建文件而不能写入数据的情况,求解……大家都试试看能不能正常运行的?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-2-19
在线时间
0 小时
发表于 2013-2-19 17:04:12 | 显示全部楼层
专门注册来谢谢 葱花鱼 
谢谢!
现在已经把文件夹和文件的创建完成。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-2-19
在线时间
0 小时
发表于 2013-2-19 17:12:17 | 显示全部楼层
回复【86楼】葱花鱼:
---------------------------------
用f_open()函数创建的文件有多大?
假如用f_open()函数创建一个DEMO.TXT文件,那么这个文件有多大?(SD卡是4G)最好能告诉怎么知道这个文件的大小。谢谢!
回复 支持 反对

使用道具 举报

58

主题

288

帖子

1

精华

高级会员

Rank: 4

积分
814
金钱
814
注册时间
2012-3-29
在线时间
81 小时
发表于 2013-3-4 14:57:17 | 显示全部楼层
回复【93楼】电子机器人:
---------------------------------
f_open只是打开或者是创建一个文件,并没有指定文件的大小。文件的大小就看你写进去的内容了
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2013-3-10
在线时间
0 小时
发表于 2013-3-12 20:54:22 | 显示全部楼层
太感谢了  我正学这部分  狂顶
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-3-27
在线时间
0 小时
发表于 2013-3-27 15:53:12 | 显示全部楼层
做标记,谢谢了!
回复 支持 反对

使用道具 举报

5

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2012-7-28
在线时间
6 小时
发表于 2013-4-29 11:32:49 | 显示全部楼层
太感谢楼主了,正需要
回复 支持 反对

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
发表于 2013-4-29 19:31:41 | 显示全部楼层
向楼主学习
回复 支持 反对

使用道具 举报

10

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2013-5-6
在线时间
3 小时
发表于 2013-5-25 22:13:21 | 显示全部楼层
 u8 KEY_Scan(u8 mode)

 static u8 key_up=1;//按键按松开标志
 if(mode)key_up=1;  //支持连按   
 if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))
 {
  delay_ms(10);//去抖动
  key_up=0;
  if(KEY0==0)return 1;
  else if(KEY1==0)return 2;
  else if(KEY2==0)return 3;
  else if(KEY3==1)return 4;
 }else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;     
  return 0;// 无按键按下
}


 static u8 key_up=1;//按键按松开标志
 if(mode)key_up=1;  //支持连按   
这两句的作用是什么?老弟 请指点
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-4-5
在线时间
2 小时
发表于 2013-5-26 22:02:34 | 显示全部楼层
 支持楼主,确实好东西,佩服
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 03:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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