HK32F030MF4P6芯片自带EEPROM,以下是读写存储功能
#define HK32F030M_EE_BEGIN (0x0C000000ul)
#define HK32F030M_EE_END (0x0C0001C0ul)
#define HK32F030M_EE_SIZE (448)
/**************************************************************************************************
* @functioin ALR_WriteByte
* @brief 根据指定的偏移地址将数据写入EEPROM
* @param address: 要写入数据的目标地址,是基于EEPROM起始地址的偏移量 0<=address< HK32F030M_EE_SIZE
* @param data_in: 要写入的数据
* @return 0 写入失败 1 写入成功
* @example ALR_WriteByte(2,0x45); 是将数据写入到HK32F030M_EE_BEGIN+5的地址,如果写入成功则返
* 回1, 否则返回0
**************************************************************************************************/
void ALR_WriteByte(uint32_t address, uint8_t data_in)
{
FLASH_Unlock();
EEPROM_EraseByte(address+HK32F030M_EE_BEGIN);
EEPROM_ProgramByte(address+HK32F030M_EE_BEGIN, data_in);
FLASH_Lock();
}
/**************************************************************************************************
* @functioin ALR_ReadByte
* @brief 根据指定的偏移地址将数据从EEPROM读出
* @param address: 要读取数据的目标地址,是基于EEPROM起始地址的偏移量0<=address< HK32F030M_EE_SIZE
* @param data_out: 读出数据的缓存变量指针
* @return 0 读取失败 1 读取成功
* @example uint8_t dataR;
* ALR_ReadByte(2,&dataR);
* 是将数据从地址HK32F030M_EE_BEGIN+5读出,如果读出成功则返
* 回1, 否则返回0
**************************************************************************************************/
void ALR_ReadByte(uint32_t address,uint8_t *data_out)
{
*data_out = (*((uint8_t *)(address + HK32F030M_EE_BEGIN)));
}
|