STC官方给出的建议:

 /***************************************************************Author:Liming***
* @brief 读取参数
* @param None
* @retval None
****************************************************************0x49E7FC7B*****/
void ReadParam(void)
{
uint16_t i;
uint8_t buffer[][];//1扇区分为64块存储区 1块内的8个字节 EepromReadBytes(IAP_SECTOR0, &buffer[][], 0x200); #ifdef DEBUG
for(i=; i<; i++)//调试模式输出数据
{
SendBytes(&buffer[i][], );
SendString("\r\n");
Delay();
}
#endif for(i=; i<; i++)
{
if((buffer[i][] == 0xff) && buffer[i][] != 0xff)
{
LocalID = buffer[i][];
return;
}
}
} /***************************************************************Author:Liming***
* @brief 保存参数
针对STC单片机Flash作为EEPROM,0只能通过扇区擦除才能变为1,但是1可以
写入改为0,发现如果对单个字节写入一次数据比如0x63,再写入0x00,读出的值为0x40并
不是理论上的0x00,但第一次写入数据都没问题。所以采用以下方法:
一扇区512字节以8字节为一块分为64块,每一块的第一字节为标志位,如果为0xff则后面
的7字节为有效数据,如果为0x00则后面的7字节已经作废。
* @param
* @retval None
****************************************************************0x49E7FC7B*****/
void SaveParam(void)
{
uint16_t i;
uint8_t buffer[][];//1扇区分为64块存储区 1块内的8个字节 EepromReadBytes(IAP_SECTOR0, buffer, 0x200); for(i=; i<; i++)
{
if((buffer[i][] == 0xff) && (buffer[i][] == 0xff))
{
IapProgramByte(IAP_SECTOR0+(i*)+, LocalID);
if(i != 0x00)
{
IapProgramByte(IAP_SECTOR0+(i*)-, 0x00);//用过的存储块更改标志
}
return;
}
}
IapEraseSector(IAP_SECTOR0);
IapProgramByte(IAP_SECTOR0+, LocalID);
}

STC单片机Flash做EEPROM的代码的更多相关文章

  1. STC单片机 IAP(EEPROM)的使用

    STC89C51.52内部都自带有2K字节的EEPROM,54.55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000 次 ...

  2. FLASH和EEPROM的最大区别

    源:http://www.cnblogs.com/bingoo/p/3551753.html FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储 ...

  3. 大话FLASH和EEPROM

    最近在看代码的时候,遇到了一个使用FLASH模拟EEPROM的情况,看到这个我当时是一脸蒙蔽啊,对于一个有时候连FLASH和EEPROM都分不清的人来说,怎么可能读懂用FLASH来模拟EEPROM呢? ...

  4. AVR单片机中的EEPROM

    1.EEPROM介绍 Electrically Erasable Programmable Read Only Memory 电气可拭除可编程只读存储器 发展过程:ROM – > PROM –& ...

  5. FLASH和EEPROM的区别

    FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低 ...

  6. Flash,EEPROM差别

    flash是用来存储代码的,在执行过程中不能改:EEPROM是用来保存用户数据,执行过程中能够改变,比方一个时钟的闹铃时间初始化设定为12:00,后来在执行中改为6:00,这是保存在EEPROM里,不 ...

  7. 单片机成长之路(51基础篇) - 002 STC单片机冷启动和复位有什么区别

    STC单片机简介 STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等.还支持I ...

  8. STM32学习笔记:读写内部Flash(介绍+附代码)

    一.介绍 首先我们需要了解一个内存映射: stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同. RAM起 ...

  9. 时空上下文视觉跟踪(STC)算法的解读与代码复现(转)

    时空上下文视觉跟踪(STC)算法的解读与代码复现 zouxy09@qq.com http://blog.csdn.net/zouxy09 本博文主要是关注一篇视觉跟踪的论文.这篇论文是Kaihua Z ...

随机推荐

  1. Python 装饰器(Decorators) 超详细分类实例

        Python装饰器分类 Python 装饰器函数: 是指装饰器本身是函数风格的实现; 函数装饰器: 是指被装饰的目标对象是函数;(目标对象); 装饰器类 : 是指装饰器本身是类风格的实现; 类 ...

  2. python url码转换 chr()码

    爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet ...

  3. AttributeError: module 'pytest' has no attribute 'allure'

    解决 pip3 uninstall pytest-allure-adaptor pip3 install allure-pytest 参考: https://www.cnblogs.com/lansa ...

  4. IntelliJ IDEA 快捷键终极大全,速度收藏!

    ​阅读本文大概需要 6 分钟. ▌自动代码 常用的有 fori/sout/psvm+Tab 即可生成循环.System.out.main 方法等 boilerplate 样板代码 . 例如要输入 fo ...

  5. Gaze Estimation学习笔记(1)-Appearance-Based Gaze Estimation in the Wild

    目录 前言 简介 论文概述 论文主要内容 MPIIGaze数据集 引入CNN的新Gaze Estimation方法 人脸对齐与3D头部姿态判断 归一化 使用CNN进行视线检测 论文作者进行的实验及结果 ...

  6. SpringMVC中使用到DataBinder的类

    RedirectAttributesMethodArgumentResolverRequestResponseBodyMethodProcessorServletModelAttributeMetho ...

  7. 解决 No IDEA annotations attached to the JDK 1.8和xml文件没有代码提示

    Android studio3.3 用着用着突然xml里没有代码联想了,忙着做其他的就没管,写xml的时候就硬写... 然后今天用着突然在class文件上方提示No IDEA annotations ...

  8. redis报错OOM command not allowed when used memory > 'maxmemory'

    登录到redis上查询 ./redis-cli -h IP -p port -a passwd redis>info memory 查询,内存已耗尽 查询配置文件,发现之前配置最大内存的策略设置 ...

  9. 转 mysql distinct函数 与 免密码登录 与 查看表的结构

    #########sample 1 mysql中去重 distinct 用法   在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重 ...

  10. C++内存管理3-探讨C++内存和回收

    1 C++内存对象大会战 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛. 用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性 ...