HC32L136的掉电保存数据FLASH存储器的程序
时间: 2023-12-14 14:35:41 浏览: 32
HC32L136芯片内置了一个用于数据存储的EEPROM模块,可以用来实现掉电保存数据。下面是一个掉电保存数据FLASH存储器的程序,可以参考一下:
```c
#include "hc32l136.h"
#define EEPROM_START_ADDR (0x001E0000ul)
void EEPROM_WriteData(uint32_t u32Addr, uint8_t *pu8Data, uint32_t u32Len)
{
uint32_t i;
/* Unlock EEPROM */
M4_EEPROM->PWPR = 0x00u;
M4_EEPROM->PWPR = 0x01u;
/* Check if EEPROM is ready */
while (M4_EEPROM->SR_f.READY != 1u);
/* Write data to EEPROM */
for (i = 0; i < u32Len; i++)
{
*((__IO uint8_t *)(EEPROM_START_ADDR + u32Addr + i)) = pu8Data[i];
while (M4_EEPROM->SR_f.READY != 1u);
}
/* Lock EEPROM */
M4_EEPROM->PWPR = 0x00u;
}
void EEPROM_ReadData(uint32_t u32Addr, uint8_t *pu8Data, uint32_t u32Len)
{
uint32_t i;
/* Read data from EEPROM */
for (i = 0; i < u32Len; i++)
{
pu8Data[i] = *((__IO uint8_t *)(EEPROM_START_ADDR + u32Addr + i));
}
}
int main(void)
{
uint8_t u8Data[8] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
/* Write data to EEPROM */
EEPROM_WriteData(0x00u, u8Data, sizeof(u8Data));
/* Read data from EEPROM */
EEPROM_ReadData(0x00u, u8Data, sizeof(u8Data));
while (1);
}
```
这个程序使用了HC32L136芯片内置的EEPROM模块来实现掉电保存数据。在程序中,通过EEPROM_WriteData函数可以将数据写入EEPROM中,通过EEPROM_ReadData函数可以从EEPROM中读取数据。在写入和读取数据之前,需要先解锁EEPROM,写入或读取完成后再锁定EEPROM。注意,写入或读取数据时需要判断EEPROM是否准备好,否则会导致数据写入或读取失败。