void EEPROM_Unlock(void) //EEPROM解锁
{
do{
FLASH->DUKR = 0xAE; // 写入第一个密钥
FLASH->DUKR = 0x56; // 写入第二个密钥
}
while((FLASH->IAPSR & 0x08) == 0);//等待解锁成功
}
void EEPROM_Lock(void) //锁EEPROM
{
FLASH->IAPSR |= 0x08;//Set DUL
//FLASH_IAPSR &= 0x;//Clear EOP
}
void Write_IIC_Byte(unsigned int StartAddress, unsigned char eData)
{
unsigned char *EEPROM_Address;
unsigned int Address;
disableInterrupts();
Address = StartAddress;
EEPROM_Address = (unsigned char *)(0x4000+Address);
EEPROM_Unlock();
*EEPROM_Address = eData;
while((FLASH->IAPSR & 0x04) == 0); // 等待写操作成功
EEPROM_Lock();
enableInterrupts();
}
unsigned char Read_IIC_Byte(unsigned int StartAddress)
{
unsigned char eData;
unsigned char *EEPROM_Address;
unsigned int Address;
disableInterrupts();
Address = StartAddress;
EEPROM_Address = (unsigned char *)(0x4000+Address);
EEPROM_Unlock();
eData = *EEPROM_Address;
//while((FLASH->IAPSR & 0x04) == 0);
EEPROM_Lock();
enableInterrupts();
return (eData);
}
以上是我读写EEPROM的程序,各位看看有问题吗?
|