存儲器分頁

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); 
			}
		}	
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章