N76E003模拟EEPROM读取和保存应用配置

N76E003 EEPROM配置
本文介绍N76E003单片机使用模拟EEPROM进行配置保存和读取的方法。通过优化代码空间,实现了配置项的高效管理。提供了具体的实现代码和测试示例。

N76E003模拟EEPROM读取和保存应用配置

N76E003模拟EEPROM读取和保存应用配置的代码参考了文章:

https://blog.youkuaiyun.com/u014798590/article/details/89268198

我在这个文章代码的基础上优化了下空间,同时更方便配置保存。
用法:在结构体store_config_t内添加想要保存的配置即可,由于是整页擦除,为了不丢失其他配置,保存前需要同步整个store_config_t内容,然后再整体保存。
注意STORE_DATA_SIZE的值要大于store_config_t的大小。
读写配置参考test_flash调用方式。


#define DEF_CFG_VAL_U8 0xFF
#define DEF_CFG_VAL_U16 0xFFFF

typedef struct store_config_struct
{
	uint8_t enable;
	uint8_t val_u8;
	int val_s16;
	uint16_t val_u16;
} store_config_t;

int load_config(store_config_t *p_store_cfg);
int save_config(store_config_t *p_store_cfg);

void test_flash(void);
#define FLASH_STORE_ADDR_BASE 0x4700//位于地址末端.4700~47FF共256字节
#define PER_PAGE_SIZE 128

#define EN_OPTIMIZE_XDATA_BUFFER_SIZE
#ifndef EN_OPTIMIZE_XDATA_BUFFER_SIZE
#define STORE_DATA_SIZE 128
#else
#define STORE_DATA_SIZE 16	/*set to sizeof(store_config_t) */
#endif
volatile uint8_t xdata page_buffer[STORE_DATA_SIZE];

uint16_t Read_APROM_WORD(uint16_t *read_addr)
{
	uint16_t rdata;
	uint16_t code *u16_addr = (uint16_t code *)read_addr;
	rdata = *u16_addr;

	return rdata;
}

#ifndef EN_OPTIMIZE_XDATA_BUFFER_SIZE
void Write_DATAFLASH_DATA(uint16_t u16EPAddr,
	uint8_t *src_data_ptr,
	in
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值