STM8S 操作内部EEPROM
发布时间:2020-12-15 06:32:11 所属栏目:百科 来源:网络整理
导读:对于STM8S103F3这款芯片来讲,存在640个字节的EEPROM,当然如果有外部EEPROM,自然是不会使用到内部的EEPROM的。但小东西也有大用途,例如做无线应用时,减少成本的情况下,还能保存一些特定设置,如:休眠时间,工作频率,输出功率,密码等。 下图所示,STM
对于STM8S103F3这款芯片来讲,存在640个字节的EEPROM,当然如果有外部EEPROM,自然是不会使用到内部的EEPROM的。但小东西也有大用途,例如做无线应用时,减少成本的情况下,还能保存一些特定设置,如:休眠时间,工作频率,输出功率,密码等。 下图所示,STM8S系列EEPROM大小一目了然。 操作EEPROM自然分成读操作和写操作,先查看STM8S的手册描述如下: 中文手册上的存储器组织结构存在错误,如: 对应英文手册如: 对应的代码如下; char *p = 0x4000; u8 a,b,c; a = *p; b = *p++; c = *p++;就像C8051操作外部数据存储一样,只需要简单通过指针指向0x4000位置即可。 写操作,则有些小麻烦,主要是STM8S的存储区安全机制问题。 中文手册描述: 英文手册描述: u8 write_header(header *h) { u8 *p=(u8 *)EP_HEADER_ADDR; //EP_HEADER_ADDR 0x4000 if(!h) return 0; /*操作EEPROM,需要先进行解锁*/ FLASH_DUKR=0xAE; //注意这里不能断点调试,否则会造成内部不同步,FLASH解锁失败 FLASH_DUKR=0x56; FLASH_CR2=0x00; FLASH_NCR2=0xFF; if(!(FLASH_IAPSR & 0x08)) //检测对应的位是否解锁 return 0; _memcpy(p,(u8 *)h,sizeof(header)); FLASH_IAPSR=(u8)(~0x08); //重新上锁 return 1; } 执行解锁后,操作也是非常简单的。 总结: 1、STM8S内部EEPROM使用还是挺方便的,只有写操作时需要解锁。 2、中文手册很多时候会存在错误,只能作为快速浏览用,具体应用还得参考官方英文手册。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |