给stm32移植fatfs文件系统,今天终于取得阶段性胜利。只需要提供这样几个函数即可
DSTATUS disk_initialize (BYTE);
DSTATUS disk_status (BYTE);
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE); // 如果实现只读的文件系统就不需要了。
DRESULT disk_ioctl (BYTE, BYTE, void*);
移植成功后,可以用如下方式读取SD卡了,实在太方便了,和PC机上编程差不了多少。
unsigned int i;
BYTE buffer[512]; // file buffer
FATFS fs; // Work area (file system object) for logical drive
FIL fsrc; // file objects
FRESULT res; // FatFs function common result code
UINT br; // File R/W count
USART1_Puts("Now, I'll read file 'i2c/uart.lst'.\n");
// Register a work area for logical drive 0
f_mount(0, &fs);
// Open source file
res = f_open(&fsrc, "i2c/uart.lst", FA_OPEN_EXISTING | FA_READ);
if (res)
{
USART1_Puts("Can't open i2c/uart.lst for read. :-(\n");
goto exit;
}
for (;;) {
res = f_read(&fsrc, buffer, sizeof(buffer), &br);
if (res || br == 0) break; // error or eof
for( i = 0; i < br; ++i )
USART1_Putc(buffer[i]);
}
f_close(&fsrc);
exit:
// Unregister a work area before discard it
f_mount(0, NULL);
2. STM32 文件系统,传输文件
文件:mian.c
//功能:串口初始化、打开定时器中断,然后一直接收数据状态就好了。发送版在中断中实现权
#include "stm32f10x.h"
#include "usart.h"
u8 USART_rx_data;
int main(void)
{
RCC_Configuration(); //系统时钟配置
GPIO_Configuration(); //端口初始化
NVIC_Configuration(); //中断源配置
USART_Configuration(); //串口1初始化
Time_Init(); //定时器初始化
#ifdef DEBUG
debug();
#endif
TIM_Cmd(TIM3,ENABLE);
while(1)
{
}
}
3. STM32的FatFS文件系统中如何创建和批量命名文件
给你个我写的样板。。。
char pch[40];
short inum=0,bmpres;
FIL bmpfsrc;
do
{
sprintf((char*)pch,"0:ScreenShort/SS_%d.bmp",inum++);
if(inum>500)return;
bmpres = f_open( &bmpfsrc,(char*)pch, FA_CREATE_NEW | FA_WRITE);
}while(bmpres!=FR_OK);
BmpScreen_short(0,0,400,240,&bmpfsrc);
f_close(&bmpfsrc);
我这个是截图用的一部分代码,功能是把当前截回图保存到内存卡上面,答内存卡上面已经有一部分截图了,所以当前截图的名字需要不和以前的重复,我用了一个while来一直创建,知道创建成功为止。图片命名里面有个变量,比如第一张截图是SS_0.bmp,第二个截图就是SS_1.bmp。
假设内存卡上面已经有SS_0.bmp和SS_1.bmp,那么,当前截图的名字就是SS_2.bmp。你那个比我这个还简单,希望能够给你提示。
4. stm32 sd卡文件系统移植什么意思
通俗的讲就是stm32能将sd卡格式化,然后可以往里面读写文件。野火开发板例程里面有sd卡文件系统的例子吧。