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[i2];
// 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¸ö×Ö½Ú.
}
}

本文介绍了一种在嵌入式系统中对Flash进行写入和读取操作的方法。通过两个函数`WriteDataInFlash`和`ReadDataInFlash`实现了对指定地址的数据写入和读取功能。该方法首先解锁Flash并清除相关标志位,然后擦除目标页面,并将数据写入到指定地址。读取过程则是从指定地址读取数据。
338

被折叠的 条评论
为什么被折叠?



