转载地址:http://www.51hei.com/bbs/dpj-56489-1.html

STM8L103C6拥有1KB的片上EEPROM,可以用来存储程序需要用到的参数,就不需要额外使用24C02这样的外部存储器了.
同时,和24C02比起来,STM8L的片上EEPROM操作更简单,可以直接对地址进行操作,进行数据读写.
下图是STM8L闪存和EEPROM的地址分配图,可以看到EEPROM的起始地址为0x001000,结束地址为0x0013FF.共1024个地址空间,所以EEPROM的容量为1KB.

EEPROM在上电复位后是写保护的,在向其中写入数据时,需要解锁,关闭写保护.解锁流程为:
①第一次向FLASH_DUKR写入密钥0xAE
②第二次向FLASH_DUKR写入密钥0x56
两次都写入正确后,写保护功能被关闭,可以对EEPROM区域进行写操作.解锁成功后,DUL位会被置位,在写完密钥后,可以读取DUL位来判断有没有解锁成功.
在向EEPROM写数据时,单片机内部会产生高压对EEPROM写操作,如果这个时候被中断打断,会造成单片机异常,所以写操作时,需要关闭总中断,防止意外发生.
本例程,先向EEPROM的四个地址各写入了一个字节的数据,然后从这个四个地址读取出这些数据,和写入数据进行对比.从下图可以看到,读出数据和写入数据完全一致.

  1. /****************************************************************************************
  2. *开发环境:IAR for stm8 v6.5.3
  3. *硬件平台:STM8L-DISCOVERY
  4. *功能说明:本例程,先向EEPROM的四个连续地址写入四个字节数据,然后读取出来,与写入数据对比
  5. *作    者:茗风
  6. ****************************************************************************************/
  7. #include"iostm8l152c6.h"
  8. #include"stdint.h"
  9. #define EEPROM_STARTADDR 0x1000
  10. /******************************************************************************************************
  11. *名    称:  void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)
  12. *功    能: 向EEPROM指定地址写入一字节数据
  13. *入口参数: Addr:存放数据的偏移地址
  14. *           Data:待写入的数据
  15. *出口参数:无
  16. *范    例:
  17. ******************************************************************************************************/
  18. void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)
  19. {
  20. uint8_t  *Ptr_SegAddr; //Segment pointer
  21. Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr);  //Initialize  pointer
  22. FLASH_DUKR=0xAE;
  23. FLASH_DUKR=0x56;
  24. while(!FLASH_IAPSR_DUL);//如果DUL没有置位,说明解锁不成功,最好加入超时判断
  25. asm("sim");//关闭中断
  26. *Ptr_SegAddr=Data; //指定地址,写1 字节
  27. while(!FLASH_IAPSR_EOP);//等待写操作完成,最好加入超时判断
  28. asm("rim");//打开中断
  29. FLASH_IAPSR_DUL=0;//上锁,对DATA EEPROM写保护
  30. }
  31. /******************************************************************************************************
  32. *名    称:uint8_t EEPROM_ReadByte(uint8_t Addr)
  33. *功    能:从EEPROM中读取一个字节数据
  34. *入口参数:Addr:存放数据的偏移地址
  35. *出口参数:Data:读回的数据
  36. *说    明:无
  37. *范    例:无
  38. ******************************************************************************************************/
  39. uint8_t EEPROM_ReadByte(uint16_t Addr)
  40. {
  41. uint16_t Data=0;
  42. uint8_t *Ptr_SegAddr;
  43. Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr);  //Initialize  pointer
  44. Data=*Ptr_SegAddr;
  45. return Data;
  46. }
  47. void main(void)
  48. {
  49. static  uint8_t  t1=0,t2=0,t3=0,t4=0;
  50. EEPROM_WriteByte(0x00,0x40);
  51. EEPROM_WriteByte(0x01,0x41);
  52. EEPROM_WriteByte(0x02,0x42);
  53. EEPROM_WriteByte(0x03,0x43);
  54. t1=EEPROM_ReadByte(0x00);
  55. t2=EEPROM_ReadByte(0x01);
  56. t3=EEPROM_ReadByte(0x02);
  57. t4=EEPROM_ReadByte(0x03);
  58. //  asm("rim");               //enable interrupts
  59. while(1)
  60. {
  61. //    asm("wfi");
  62. }
  63. }

复制代码

STM8L的EEPROM读写原理及例程相关推荐

  1. 通过mtd读写flash_NOR Flash读写原理及驱动

    本文主要是关于NOR Flash的相关介绍,并着重对NOR Flash读写原理及驱动进行了详尽的阐述. NOR Flash NOR Flash是现在市场上两种主要的非易失闪存技术之一.Intel于19 ...

  2. 基于51单片机的EEPROM读写

    本讲内容: 对存储器的基本知识进行介绍.介绍EEPROM芯片AT24C02:通过例程展示EEPROM的读写. 存储器是应用于各种嵌入式场合的存储部件,按功能可分为只读存储器(ROM)和随机存取存储器( ...

  3. EEPROM读写实验

    更多交流欢迎关注作者抖音号:81849645041 目标 实现从机设备EEPROM读写数据. 原理 EEPROM 是一种掉电后数据不丢失的存储器,常用来存储一些配置信息,以便系统重新上电的时候加载.E ...

  4. STM8S103F2 EEPROM读写

    /************ STM8S103 EEPROM读写         ******/ /*芯片型号:STM8S103F2PB6                      */ /*功能描述: ...

  5. pic单片机c语言读eeprom,PIC16F877单片机内部EEPROM读写实例

    ;PIC16F877单片机内部EEPROM读写实例*************************************************************************** ...

  6. Zookeeper的集群架构以及读写原理

    本文来说下Zookeeper的集群架构以及读写原理 文章目录 总体架构 Session Quorum模式 搭建3节点ZooKeeper集群 本文小结 总体架构 应用使用 ZooKeeper 客户端库来 ...

  7. HBase数据模型和读写原理

    Hbase的数据模型和读写原理: ​ HBase是一个开源可伸缩的分布式数据库,他根据Google Bigtable数据模型构建在hadoop的hdfs存储系统之上. ​ HBase是一个稀疏.多维度 ...

  8. 获取hdfs_收好!Hadoop-HDFS读写原理的超详细教程

    最近在答疑工作中,有很多小伙伴都在问HDFS的读写原理是什么,小编其实在刚开始学习大数据的时候,也对此有所困惑. 可见,同一个知识,同一个困惑啊~ 为了让更多的小伙伴能够彻底解决这一困惑,小编下面就为 ...

  9. NAND FLASH读写原理

    NAND FLASH读写原理 一.结构分析  S3C2410处理器集成了8位Nand Flash控制器.目前市场上常见的8位NandFlash有三星公司的k9f1208.k9f1g08.k9f2g08 ...

最新文章

  1. ORA-01111,ORA-01110,ORA-01157报错处理
  2. STM32中IO口的8中工作模式
  3. EBPY0106是什么意思
  4. MySQL高级配置(二)详细介绍
  5. Unity VR游戏开发干货教程:优化VR体验
  6. TFS2010 删除工作区(同时删除工作区中所有的目录映射)
  7. 微信小程序云开发之云函数创建
  8. 程序员在这些地方敲代码,普通笔记本根本扛不住
  9. 关于sinX与y的大小比较取值范围计算
  10. 销售转向java编程的开始之路
  11. Kafka安装包下载地址
  12. workstation服务丢失 共享打不开 0x80070035
  13. 李白的藏头诗鸿蒙圣安卓,李白藏头诗生成器
  14. vue tinymce安装及使用
  15. 新网站如何做seo优化,这5个步骤让网站快速被收录
  16. 从100套真题中提炼而出的100个经典句子
  17. 面试阿里必知的SQL面试题 100讲
  18. 有善始者实繁 能克终者盖寡
  19. mac如何查看mysql是否卸载干净_mac 干净卸载 mysql
  20. linux 文件修复工具,Linux环境下几个好用的文件恢复工具

热门文章

  1. 使用uniapp开发微信小程序的微信支付流程
  2. 计算机术语新年祝福,新年祝福的短句
  3. Horizon Cloud Service 云桌面水印组策略配置
  4. 用python计算两点坐标_python 计算方位角实例(根据两点的坐标计算)
  5. 基于springboot+jsp的商场停车场服务管理信息系统
  6. 用js 设置网页快捷键
  7. 虚拟服务器日语,云服务器日语
  8. PHP单商户商城系统 全套源代码【源码+文档+搭建部署教程】
  9. Matlab图像处理基础(1):图像表示,点处理
  10. 全国中小学信息技术创新与实践大赛:加码未来编程赛道