然后查找了一下SD_Init() 这个函数在我们一直的时候,以及在disk_initialize()磁盘初始化的时候调用,但是发现f_mount(0,&fs)中并没有调用disk_initialize()这个函数。。。。。。
于是继续查找,发现调用这个disk_initialize()的函数有三个地方地方,其中chk_mounted()这个函数是被调用的最多的(此函数调用了disk_initialize());
然后在f_read() f_write()等等很多操作的函数都调用了chk_mounted();
这样再看初始化,于是有了 f_mount()开辟了一个磁盘区域,然后调用其他操作的时候,就初始化了SD卡!
到这里就看明白为啥不初始化SD卡(ps:其实在操作的时候才初始化)。
但是有个疑问,为什么每次调用一次f_read等操作都要初始化一次????为什么不直接在开辟磁盘的时候初始化,后面就不用每次都初始化了???? 暂时没想明白为啥要这样。。。。
在后面的测试中,发现了一个比较郁闷的事情: 我单独测试SD卡的写操作,定时器每隔100ms触发一次SD卡写操作,每次SD卡写入10KByte 用时大概10ms左右 然而测试过程中,发现正常情况都是10ms左右完成写入,但是偶尔会有一次用时很长,大概100多ms 没有发现特定的规律。。。 找了一下原因,没找出来 不知道是驱动原因,还是SD卡物理层本身的原因。。。。。。。。 (目前未解之谜,呵呵)