学前班
最后登录1970-1-1
在线时间 小时
注册时间2017-10-6
|
火哥:
/*-----------------------------------------------------------------------*/
/* 写扇区:见数据写入指定扇区空间上 */
/*-----------------------------------------------------------------------*/
#if _USE_WRITE
DRESULT disk_write (
BYTE pdrv, /* 设备物理编号(0..) */
const BYTE *buff, /* 欲写入数据的缓存区 */
DWORD sector, /* 扇区首地址 */
UINT count /* 扇区个数(1..128) */
)
{
uint32_t write_addr;
DRESULT status = RES_PARERR;
if (!count) {
return RES_PARERR; /* Check parameter */
}
case SPI_FLASH:
/* 扇区偏移2MB,外部Flash文件系统空间放在SPI Flash后面6MB空间 */
sector+=512;
write_addr = sector<<12;
SPI_FLASH_SectorErase(write_addr);
SPI_FLASH_BufferWrite((u8 *)buff,write_addr,count<<12);
status = RES_OK;
break;
default:
status = RES_PARERR;
}
return status;
}
#endif
这个例子中,SPI_FLASH_SectorErase(write_addr);的作用是每次檫除write_addr地址的这个扇区,但是 SPI_FLASH_BufferWrite((u8 *)buff,write_addr,count<<12);是可以写很多扇区。为什么是这样的,这样理解不了。。。。
另外/* 同时擦除扇区个数 */
case GET_BLOCK_SIZE :
*(DWORD * )buff = 1;
这个参数会影响这个文件系统的什么操作?
|
|