void SPI_FLASH_BufferWrite(u8 *pBuffer, u32 WriteAddress, u16 NumberByteToWrite){
u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0;
Addr = WriteAddress % SPI_Page_Size; //
count = SPI_Page_Size - WriteAddress; //
NumOfPage = NumberByteToWrite / SPI_Page_Size; //
NumOfSingle = NumberByteToWrite % SPI_Page_Size; //
if( Addr == 0 ){ //ÕýºÃÊÇÒ³µÄ±¶Êý
if(NumOfPage == 0){
SPI_FLASH_PageWrite(pBuffer, WriteAddress, NumberByteToWrite);
}else{
while(NumOfPage --){
SPI_FLASH_PageWrite(pBuffer, WriteAddress, NumberByteToWrite); WriteAddress += SPI_Page_Size;
pBuffer += SPI_Page_Size;
}
SPI_FLASH_PageWrite(pBuffer, WriteAddress, NumOfSingle }
}else{
if(NumOfPage == 0 ){
if(NumOfSingle > count){
temp = NumOfSingle - count;
SPI_FLASH_PageWrite(pBuffer, WriteAddress, count);
WriteAddress += count;
pBuffer += count;
SPI_FLASH_PageWrite(pBuffer, WriteAddress, temp);
}else{
SPI_FLASH_PageWrite(pBuffer, WriteAddress, NumberByteToWrite);
}
}else{
NumberByteToWrite -= count;
NumOfPage = NumberByteToWrite / SPI_Page_Size;
NumOfSingle = NumberByteToWrite % SPI_Page_Size;
SPI_FLASH_PageWrite(pBuffer, WriteAddress, count);
WriteAddress += count;
pBuffer += count;
while(NumOfPage -- ){
SPI_FLASH_PageWrite(pBuffer, WriteAddress, SPI_Page_Size);
WriteAddress += SPI_Page_Size;
pBuffer += SPI_Page_Size;
}
if(NumOfSingle !=0){
SPI_FLASH_PageWrite(pBuffer, WriteAddress, NumOfSingle);
}
}
}
}