|
楼主 |
发表于 2023-7-7 19:42:17
|
显示全部楼层
本帖最后由 circlegan 于 2023-7-7 20:18 编辑
我的U盘烧录程序是调用下面函数,这个有什么问题没
void copy_font(uint32_t flash_addr)
{
u32 total = 0;
u32 i = 0;
FRESULT res_flash;
u8 buff[4096] = {0};
FIL fnew;
UINT br = 0;
u32 fwaddr = flash_addr; //写入的地址,0x00000000
res_flash = f_open(&fnew,"0:update/font.bin", FA_READ);
if(res_flash != FR_OK)
return;
else if(fnew.fsize > 4 * 1024 * 1024) // 只有4M空间
{
return;
}
for(i=0;i<fnew.fsize/4096+1; i++)
{
res_flash = f_read(&fnew, buff, 4096, &br);
if(br == 0) // 没有读取到数据
break;
sf_WriteBuffer(buff, fwaddr+total, br);
total += br;
if(br < 4096) // 已经读完
break;
}
f_close(&fnew);
} |
|