- UID
- 1029342
- 性别
- 男
|
因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序。
原理:先要把整页FLASH的内容搬到RAM中,然后在RAM中改动,然后擦除整页FLASH,再把改动后的内容写入原Flash页。下面程序调试通过。
/*******************************************************************************
* Function Name : I2C_EE_BufferRead
* Description : Reads a block of data from the EEPROM.
*Input :
* -RomAddr
* -NumByteToRead
* -pRomData
*Output : None
*Return : None
*******************************************************************************
void I2C_EE_BufferRead(u16 RomAddr,u16NumByteToRead,u8 *pRomData)
{
u32 param_flashbase;
u8*ptr;
param_flashbase = 0x8000000+(300+20)*1024;
ptr =(u8*)(param_flashbase + RomAddr);
while( NumByteToRead-- >0)
{
*pRomData =*ptr; //直接赋值即可
printf("0x%x",*pRomData);
pRomData++;
ptr++;
}
return;
}
/*******************************************************************************
* Function Name : I2C_EE_BufferWrite
*Description : Write a block of data to theEEPROM.
*Input :
* -RomAddr
* -NumByteToRead
* -pRomData
*Output : None
*Return : None |
|