用了下这个Flash模拟EE功能,挺方便的,不用外接EE了。
这个EE有防掉电的功能,蛮好!不怕写数据的时候掉电。
目前已进行了200万次擦写,数据都正确。
敲黑板,划重点:附件工程含源码,改一改,还可以用在其它的MCU上。哈哈~
----------------------------------------------------------------------
上干货
----------------------------------------------------------------------
1. 适用芯片 u HC32L110系列 u HC32F003系列 u HC32F005系列
2. 功能特点 u 通过软件算法使用片内FLASH存储器实现可配置大小的EE存储区,默认为32字节。 u EE存储区(32字节)的数据擦写次数不少于600万次。 u EE存储区写入操作为原子操作,写数据时断电不会造成数据混乱。 u 用户只需要调用相应的读写函数即可实现对EE存储区数据的读取与写入。 u 快速备份区(32字节)适用于即将掉电时快速保存运行参数,仅需1.2ms即可保存32字节。 u 默认使用的数据存储区为4个Flash Page,即2K字节。 u 不使用快速备份区时,软件算法占用的ROM区为876字节(IAR最高优化)。 u 使用快速备份区时,软件算法占用的ROM区为1228字节(IAR最高优化)。
3. EE存储区使用方法 3.1 在项目工程中添加HDEE5.C文件。 3.2 在程序的初始化阶段调用HDEE_Ini函数。 3.3 使用HDEE_Read函数读取EE存储区内的数据。 3.4 使用HDEE_Write函数将数据写入到EE存储区。
4.1 EE存储区初始化函数 原型:void HDEE_Ini( void ); 功能:初始化EE相关的数据存储区域。 参数:无。 条件:需要用户将系统时钟切换为4MHz。
4.2 EE存储区读取函数 原型:uint8_t HDEE_Read(uint8_t EeAddr, uint8_t *pRdBuf , uint8_t RdCnt ); 功能:按参数要求读取EE内的数据。 参数:EeAddr – 待读取的数据位于EE内的地址,范围为0-31。 pRdBuf – 读到的数据的存储指针。 RdCnt – 需要读取的数据的字节数。 返回:返回非0代表成功读取数据,返回0代表读取数据失败。
4.3 EE存储区存储函数 原型:uint8_t HDEE_Write(uint8_t EeAddr, uint8_t *pWrBuf , uint8_t WrCnt ); 功能:按参数要求将数据存储到EE。 参数:EeAddr – 待存储的数据位于EE内的目标地址,范围为0-31。 pWrBuf – 待存储的数据的指针。 WrCnt – 待存储的数据的字节数。 返回:返回非0代表成存储数据,返回0代表存储数据失败。
条件:需要用户将系统时钟切换为4MHz。
|