stm8 eeprom

这里写代码片
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++;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值