STM8S EEPROM 操作

STM8S 内置EEPROM,对于很大需要带记忆的产品来说,是个很好的资源,以下是我个人摸索出来的,并且验证OK,大家如需要可放心使用。

 #define EEPROMADDR0X000  ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS))
 #define EEPROMADDR0X001  ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS+1))
 #define EEPROMADDR0X002  ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS+2))
 #define EEPROMADDR0X003  ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS+3))

void FLASH_Unlock(FLASH_MemType_TypeDef MemType)
{
    /* Check parameter */
    assert_param(IS_MEMORY_TYPE_OK(MemType));

    /* Unlock program memory */
    if (MemType == FLASH_MEMTYPE_PROG)
    {
        FLASH->PUKR = FLASH_RASS_KEY1;
        FLASH->PUKR = FLASH_RASS_KEY2;
    }

    /* Unlock data memory */
    else
    {
        FLASH->DUKR = FLASH_RASS_KEY2; /* Warning: keys are reversed on 

data memory !!! */
        FLASH->DUKR = FLASH_RASS_KEY1;
    }
}

void FLASH_DeInit(void)
{
    u8 temp = 0;
    FLASH->CR1 = FLASH_CR1_RESET_VALUE;
    FLASH->CR2 = FLASH_CR2_RESET_VALUE;
    FLASH->NCR2 = FLASH_NCR2_RESET_VALUE;
    FLASH->IAPSR &= (u8)(~FLASH_IAPSR_DUL);
    FLASH->IAPSR &= (u8)(~FLASH_IAPSR_PUL);
    temp = FLASH->IAPSR;
    /* Reading of this register causes the clearing of status flags */
}

void FLASH_ProgramByte(u32 Address, u8 Data)
{
    /* Check parameters */
    assert_param(IS_FLASH_ADDRESS_OK(Address));
    *((PointerAttr u8*) Address) = Data;
}

u8 FLASH_ReadByte(u32 Address)
{
    /* Check parameter */
    assert_param(IS_FLASH_ADDRESS_OK(Address));
    return(*((PointerAttr u8*) Address)); /* Read byte */

}

  FLASH_Unlock(FLASH_MEMTYPE_DATA);//解密EEPROM 可编程
  FLASH_DeInit();//EEPROM寄存器复位

  FLASH_Unlock(FLASH_MEMTYPE_DATA);//解密EEPROM 可读写数据
  FLASH_ProgramByte(EEPROMADDR0X000,0X25);//在首地址写入数据0x25
  FLASH_ReadByte(EEPROMADDR0X000);//将首地址的数据读出来

STM8S EEPROM 操作

时间: 2024-12-24 14:59:40

STM8S EEPROM 操作的相关文章

中颖EEPROM 操作

<pre name="code" class="cpp">/* 中颖EEPROM,使用比较方便,但有个注意点,就是每次无论你写入 什么数据或者在哪个地址写数据,都需要将对 对应的块擦除,擦 除后才能写入成功. */ #define SSPWriteFlag 0x5A #define SSPEraseFlag 0xA5 //数据区 扇形区1 #define ADDR_START1 (uint16)0x100 //数据存储区起始地址 #define ADDR

PIC XC8 EEPROM操作

要做一个报警功能的东东,要求可以通过遥控来改变遥控内容.由于对系统的稳定性要求很高,所以用了看门狗. 可是看门狗复位会引起所有寄存器重置,恢复到默认状态.遥控要改变的内容也被复位了,所以只能借助EEPROM来存储报警标志了. 我用的是MPLAB X IDE +XC8 编译器,XC8在语法上跟PICC有点不一样 EEPROM操作有两种方法,在该存储空间中定义命名变量,或者使用块访问程序来读取或写入EEPROM. 1. EEPROM 对象 __eeprom限定符可用于指示应将变量定位到EEPROM中

STC12C5A60S2 EEPROM 测试

/* 单片机内置的 EEPROM测试程序 适用 : STC12C5A60S2  只有两个扇区 0x0000~0x01FF,0x0200~02FF 测试晶振:11.05926M 12M 都可以用  功能: 读取指定地址的一个字节内容,并显示在8 P1总线上 擦除一个扇区,修改取指定地址的一个字节内容,并显示在8 P1总线上 */ #include <reg51.h> #include <intrins.h> /******************EEPROM用到的sfr中的寄存器地址

STC12C4052AD EEPROM测试

/* 单片机内置的 EEPROM测试程序 适用 : STC12C5A60S2  只有两个扇区 0x0000~0x01FF,0x0200~02FF 测试晶振:11.05926M 12M 都可以用  功能: 读取指定地址的一个字节内容,并显示在8 P1总线上 擦除一个扇区,修改取指定地址的一个字节内容,并显示在8 P1总线上 */ #include <reg51.h> #include <intrins.h> /******************EEPROM用到的sfr中的寄存器地址

STC 89C51系列 EEPROM测试程序

1测试程序 2证明程序 1 /* 单片机内置的 EEPROM测试程序 适用  STC89C51 STC89C52 STC89C53 STC89C54 STC89C58 STC89C510 STC89C512 STC89C514 测试晶振:11.05926M 12M 都可以用  功能: 读取指定地址的一个字节内容,并显示在8 P1总线上 擦除一个扇区,修改取指定地址的一个字节内容,并显示在8 P1总线上 */ #include <reg51.h> #include <intrins.h&g

旧文备份:AVR读写EEPROM分析

由于AVR的EEPROM写周期比较长(一般为毫秒级),因此在编程使用过程中要特别注意.对于读EEPROM没什么好说的,读一个字节的数据要耗费4个时钟周期,可以忍受,写就比较麻烦了,虽然放在EEPROM的数据都不是频繁访问的;虽然可以用读-比较-写的机制降低EEPROM的写操作频度,但在写入过程中,过长的写入周期还是会造成一些问题,下面就分析一下几种方式的EEPROM写操作. 循环查询式 将地址和数据写入EEPROM相关的寄存器,置写标志后就循环不断查询写完成标志,直到写完成,退出循环,顺序执行其

24系列EEPROM应用注意事项

24系列EEPROM应用注意事项 1 概述用户在使用EEPROM偶尔会出现数据丢失的情况,尤其在上下电或电源抖动过程中,会出现不确定的干扰.为了防止故障发生,建议用户按规定条件使用,避免在异常条件下操作.关于数据丢失的原因,需根据实际使用情况来分析.2 注意事项在具体应用中,请注意以下事项:1) VCC电源确定是在1.8V~5.5V范围内,VCC脚附近加一个0.1uF电容.2) SCL和SDA外部上拉,上拉电阻范围1K~10K.3) 若应用板上干扰较大,在SCL和SDA线上串几十欧姆的电阻来去毛

存储:

一 关于NORFLASH的片内执行程序: NORFLASH适合片内执行主要是符合了3个特点:读速度快(CPU的取指令).线性存储.位交换概率小(这两条保证要执行的代码区是连续的准确的).因为可片内执行,所以省去CPU取指令的复制和解压,所以体积可以做的很小.NANDFLASH只保证BLOCK0是好的,它只是不适合而不是不能片内执行.http://blog.chinaunix.net/uid-26404697-id-3152290.html 二 RAM与ROM: 2.1RAM:SRAM(静态RAM

EEPROM读写操作常见的陷阱

在项目开发中经常使用到EEPROM,现在把自己开发中曾经遇到的陷阱和自己的解决方法列出.(1)现象:加密型遥控器的ID自动丢失和改变.        原因:在更新EEPROM过程中,断开电源.        解决方法:       a.更改设计避免在写入EEPROM过程中断开电源:       b.增加100uF的电容,断电后瞬间维持EEPROM供电正常至EEPROM写入完成.(2)现象:保存在EEPROM里的配置信息自动被改变.        原因:在EEPROM读写过程中进入了中断服务程序,