Вот код:
CODE
void proba ()
{
volatile FRESULT res; // FatFs function common result code
UINT br, bw; // File read/write count
uint8_t str_cnt = 0;
// Register a work area for logical drive 0
f_mount(0, &fs);
// Открываем файл
res = f_open(&fdst, "test_cpy.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);
if(res)
{
res = res;
}
buffer[0] = 'A';
buffer[1] = 'B';
buffer[2] = 'C';
buffer[3] = 'D';
buffer[4] = 'E';
for(str_cnt = 0; str_cnt < 10; str_cnt++)
{
res = f_lseek(&fdst, fdst.fsize);
br = 5;
res = f_write(&fdst, buffer, br, &bw);
if(res)
{
res = res;
}
f_puts ("Proba \r\n", &fdst);
f_sync (&fdst);
}
f_close(&fdst);
// Unregister a work area before discard it
f_mount(0, NULL);
}
{
volatile FRESULT res; // FatFs function common result code
UINT br, bw; // File read/write count
uint8_t str_cnt = 0;
// Register a work area for logical drive 0
f_mount(0, &fs);
// Открываем файл
res = f_open(&fdst, "test_cpy.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);
if(res)
{
res = res;
}
buffer[0] = 'A';
buffer[1] = 'B';
buffer[2] = 'C';
buffer[3] = 'D';
buffer[4] = 'E';
for(str_cnt = 0; str_cnt < 10; str_cnt++)
{
res = f_lseek(&fdst, fdst.fsize);
br = 5;
res = f_write(&fdst, buffer, br, &bw);
if(res)
{
res = res;
}
f_puts ("Proba \r\n", &fdst);
f_sync (&fdst);
}
f_close(&fdst);
// Unregister a work area before discard it
f_mount(0, NULL);
}
Добавлю:
Файл не пишется размером больше 4033 байт.
Сделал вот так:
CODE
void proba ()
{
volatile FRESULT res; // FatFs function common result code
UINT br, bw; // File read/write count
uint8_t str_cnt = 0;
// Register a work area for logical drive 0
f_mount(0, &fs);
// Открываем файл
res = f_open(&fdst, "test_cpy.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);
if(res)
{
res = res;
}
buffer[0] = 'A';
buffer[1] = 'B';
buffer[2] = 'C';
buffer[3] = 'D';
buffer[4] = 'E';
for(str_cnt = 0; str_cnt < 10; str_cnt++)
{
res = f_lseek(&fdst, fdst.fsize);
br = 5;
res = f_write(&fdst, buffer, br, &bw);
if(res)
{
res = res;
}
f_puts ("Proba \r\n", &fdst);
f_sync (&fdst);
}
//---------------------------------------------------------------------------------
// Вот этот блок добавил
for(str_cnt = 0; str_cnt < 10; str_cnt++)
{
res = f_lseek(&data_file, ((&data_file)->fsize));
f_puts ("Proba\r\n", &fdst);
f_sync (&data_file);
}
//---------------------------------------------------------------------------------
f_close(&fdst);
// Unregister a work area before discard it
f_mount(0, NULL);
}
{
volatile FRESULT res; // FatFs function common result code
UINT br, bw; // File read/write count
uint8_t str_cnt = 0;
// Register a work area for logical drive 0
f_mount(0, &fs);
// Открываем файл
res = f_open(&fdst, "test_cpy.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);
if(res)
{
res = res;
}
buffer[0] = 'A';
buffer[1] = 'B';
buffer[2] = 'C';
buffer[3] = 'D';
buffer[4] = 'E';
for(str_cnt = 0; str_cnt < 10; str_cnt++)
{
res = f_lseek(&fdst, fdst.fsize);
br = 5;
res = f_write(&fdst, buffer, br, &bw);
if(res)
{
res = res;
}
f_puts ("Proba \r\n", &fdst);
f_sync (&fdst);
}
//---------------------------------------------------------------------------------
// Вот этот блок добавил
for(str_cnt = 0; str_cnt < 10; str_cnt++)
{
res = f_lseek(&data_file, ((&data_file)->fsize));
f_puts ("Proba\r\n", &fdst);
f_sync (&data_file);
}
//---------------------------------------------------------------------------------
f_close(&fdst);
// Unregister a work area before discard it
f_mount(0, NULL);
}
и стало писаться с в только что созданный файл, и размер файла не ограничен.
Ничего не понимаю, в чём дело? Что за танцы с бубном?