void EEPROOM_Configuration(void)
{
FLASH_DeInit();
/* Define flash programming Time*/
FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
/* Unlock Data memory */
FLASH_Unlock(FLASH_MEMTYPE_DATA);
}
写一位数据
FLASH_ProgramByte(0x4000,0xaa);//写0xaa数据到0x4000地址
读一位数据
read_data=FLASH_ReadByte(0x4000);//读取0x4000地址上的数据
#define EEPROM_ADDR 0x4020 //EEPROM编程地址
#define BUF_SIZE 10 //BUF长度
uint8_t WriteBuf[BUF_SIZE] = {'5', '6', '7', '8', '9','4', '3', '2', '1', '0' };
uint8_t ReadBuf[BUF_SIZE];
void EEPROM_Initializes(void)
{
//FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
FLASH->CR1 &= (uint8_t)(~0x01);
FLASH->CR1 |= (uint8_t)0x00;
}
void EEPROM_WriteNByte(uint8_t* pBuffer, uint32_t WriteAddr, uint16_t nByte)
{
// FLASH_Unlock(FLASH_MEMTYPE_DATA);//0xF7
// 对数据EEPROM进行解锁
do
{
FLASH->DUKR = 0xae; // 写入第一个密钥
FLASH->DUKR = 0x56; // 写入第二个密钥
} while((FLASH->IAPSR & 0x08) == 0); // 若解锁未成功,则重新再来
asm("nop");
while(FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET);
asm("nop");
while(nByte--)
{
FLASH_ProgramByte(WriteAddr, *pBuffer);
WriteAddr++;
pBuffer++;
FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
asm("nop");
}
//FLASH_Lock(FLASH_MEMTYPE_DATA);
/* Lock memory */
FLASH->IAPSR &= 0xF7;
}
void EEPROM_ReadNByte(uint8_t* pBuffer, uint32_t ReadAddr, uint16_t nByte)
{
while(nByte--)
{
*pBuffer = FLASH_ReadByte(ReadAddr);
ReadAddr++;
pBuffer++;
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』