这是结合官方例程改的,将4K改为64K
void FlashDiskFlush(void)
{
// Write back the cache if it's dirty
if(FLASH_Cache_Dirty)
{
// SFC_Erase(DATA_FLASH_BASE + Flash_Block_Addr, 1);
SFC_EraseEx(DATA_FLASH_BASE + Flash_Block_Addr, SFC_CMD_ERASE_BLOCK64KB,0);
for(int i = 0; i < FLASH_BLOCK_SIZE; i += 256)
SFC_Write(DATA_FLASH_BASE + Flash_Block_Addr + i, (uint32_t *)&FLASH_Block_Cache, 256/4);
FLASH_Cache_Dirty = 0;
}
逻辑上没错,但SFC_EraseEx函数似乎有点问题,文件下载不了会一直卡顿。如果用扇区擦除SFC_Erase,响应很快,但会丢文件,因为有些扇区没擦的缘故
|