STM32F0 内部Flash作为数据存储的读写

1。 写数据
void WriteDataInFlash(uint32_t WriteAddr,uint16_t *OutPtr,uint16_t NumToWrite)
{
uint8_t i=0; //
uint16_t temp=0;

	RCC_HSICmd(ENABLE);			 
	FLASH_Unlock();
	FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR);
 
	FLASH_ErasePage(PARAM_START_ADDR);//²Á³ö¶ÔÓ¦µØÖ·µÄ1Ò³(1K)

	for(i=0;i<NumToWrite;i++)  			//дÈëip
	{	

// temp=OutPtr[i2+1];
temp=OutPtr[i];
// temp<<=8;
// temp=temp+OutPtr[i
2];
// FLASH_ProgramHalfWord(WriteAddr+i*2+2,temp);
FLASH_ProgramHalfWord(WriteAddr,temp);
WriteAddr += 2;
}
FLASH_Lock();
RCC_HSICmd(DISABLE);

}

2。 读数据
void ReadDataInFlash(uint32_t ReadAddr,uint16_t pBuffer,uint16_t NumToRead)
{
uint16_t i;
for(i=0;i<NumToRead;i++)
{
// pBuffer[i]=(
(uint16_t )(ReadAddr+i+2));//¶ÁÈ¡2¸ö×Ö½Ú.
pBuffer[i]=(
(uint16_t *)(ReadAddr));//¶ÁÈ¡2¸ö×Ö½Ú.
ReadAddr+=2;//Æ«ÒÆ2¸ö×Ö½Ú.
}
}

发布了93 篇原创文章 · 获赞 11 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/cym_anhui/article/details/88958188