OpenEdv-开源电子网

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

库函数版本,FATFS的图片显示实验,找不到哪调用SD卡初始化的函数啊

[复制链接]

50

主题

207

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2012-7-21
在线时间
0 小时
发表于 2012-8-21 16:25:35 | 显示全部楼层 |阅读模式

库函数版本,FATFS的图片显示实验,找不到哪调用SD卡初始化的函数啊
  int main(void)
 {
 const char filedir[]="0:/PICTURE";
 FATFS fs;
  SystemInit();
 delay_init(72);      //延时初始化
 NVIC_Configuration();
 uart_init(9600);
  LED_Init();
   KEY_Init(); 
    LCD_Init();
 SPI_Flash_Init(); //SPI FLASH初始化

 f_mount(0, &fs);

 while(font_init())
 {
     OINT_COLOR=RED;     
  LCD_Clear(WHITE);
  LCD_ShowString(60,50,"Mini STM32"); 
  LCD_ShowString(60,70,"Font Updating...");  
   while(update_font())//从SD卡更新
     {  
         LCD_ShowString(60,90,"FAT SYS ERROR.      "); 
   delay_ms(200);    
   LED0=!LED0; 
  }
 }
 OINT_COLOR=RED;     
 Show_Str(60,50,"Mini STM32开发板",16,0);         
 Show_Str(60,70,"图片显示 程序",16,0);         
 Show_Str(60,90,"正点原子@ALIENTEK",16,0);         
 Show_Str(60,110,"2011年1月2日",16,0); 
 Show_Str(60,130,"开始显示...",16,0);
 delay_ms(1000);

 viewPictures(filedir); //一级目录浏览

 }

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

使用道具 举报

8

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2011-3-31
在线时间
51 小时
发表于 2012-8-21 16:27:16 | 显示全部楼层
 f_mount(0, &fs); 在这里初始化的
代开发智能楼宇对讲通讯、交直流无刷电机驱动、无功功率补偿器、电力仪表、电气火灾监控系统、(电梯远程监控、对讲通讯系统、TFT楼层显示)开发等。代理记账(限北京)联系方式:15300201607?shop65501025.taobao.com
回复 支持 反对

使用道具 举报

50

主题

207

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2012-7-21
在线时间
0 小时
 楼主| 发表于 2012-8-21 16:40:32 | 显示全部楼层

回复【2楼】 yjwpm :
---------------------------------
原子库函数版本是在   diskio.c里的disk_initialize这个函数初始化SD卡。

我找了一份FATFS的文档。 f_mount(0, &fs); 是不涉及SD初始化的吧。


 

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-21 17:07:23 | 显示全部楼层
chk_mounted,这个函数
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2011-3-31
在线时间
51 小时
发表于 2012-8-21 17:10:21 | 显示全部楼层
f_open 这个函数中
代开发智能楼宇对讲通讯、交直流无刷电机驱动、无功功率补偿器、电力仪表、电气火灾监控系统、(电梯远程监控、对讲通讯系统、TFT楼层显示)开发等。代理记账(限北京)联系方式:15300201607?shop65501025.taobao.com
回复 支持 反对

使用道具 举报

50

主题

207

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2012-7-21
在线时间
0 小时
 楼主| 发表于 2012-8-21 19:06:46 | 显示全部楼层
关于系统如何调用sd卡初始化的,我通过仔细看了后发现调用sd卡初始化的函数是  
1、chk_mounted 没有任何条件直接 调用stat = disk_initialize(fs->drv); 
2、f_mkfs 调用 stat = disk_initialize(drv);

关于f_mkfs 我不是很了解,但是 关于chk_mounted 这个函数是检查
/* Check if the file system object is valid or not */
关于它的调用就很多了...
....................................................................................................
f_open mode &= FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW;
res = chk_mounted(&path, &dj.fs, (BYTE)(mode & ~FA_READ));
...................................................................................................
f_chdir
res = chk_mounted(&path, &dj.fs, 0);
...................................................................................................
f_getcwd  
  res = chk_mounted((const TCHAR**)&path, &dj.fs, 0); /* Get current volume */
...................................................................................................
FRESULT f_opendir  
  res = chk_mounted(&path, &dj->fs, 0);
...................................................................................................
FRESULT f_stat  
  res = chk_mounted(&path, &dj.fs, 0);
...................................................................................................
FRESULT f_getfree  
  res = chk_mounted(&path, fatfs, 0);
...................................................................................................
FRESULT f_unlink
  res = chk_mounted(&path, &dj.fs, 1);
................................................................................................
FRESULT f_mkdir  
  res = chk_mounted(&path, &dj.fs, 1);
.................................................................................................
FRESULT f_chmod
res = chk_mounted(&path, &dj.fs, 1);
...............................................................................................
FRESULT f_utime  
  res = chk_mounted(&path, &dj.fs, 1);
...............................................................................................
FRESULT f_rename
res = chk_mounted(&path_old, &djo.fs, 1);

以上是我一一罗列出来 关于最终调用sd卡初始化的相关函数,我有一个很大的疑问?为什么每次操作这些函数都要初始化一次sd卡呢?为什么不是开始的时候初始化一次就完成了呢?
在我印象中sd卡重要初始化一次,后面的都可以直接操作读写了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-21 20:29:21 | 显示全部楼层
没有每次都初始化!!!
如果没有初始化才初始化.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 10:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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