发现STM8的eeprom非常之好用,贴出程序供参考!

2019-12-11 18:24发布

之前看某教程说,写入的时候只能按块写,但是实际使用当中发现并非如此,可以任意读写某一地址内的数据,非常简单的几句话就可以实现eeprom的读写操作,而且容量还比较大
分享一下代码:
eeprom使用前一定先初始化,两行代码搞定。此程序实现的是往特定地址内写入字节,并从特定地址读出字节,显示在LCD上
void Flash_eeprom_Init() //初始化
{
    FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
    FLASH_Unlock(FLASH_MEMTYPE_DATA);//解锁
}

void Flash_Test()
{
    uchar k=0;
    uchar buffer[15];
    uchar value[15]="hello world";
   
    for(k=0;k<15;k++)
    {
        FLASH_ProgramByte(FLASH_DATA_START_PHYSICAL_ADDRESS+k,value[k]);
        FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);//一定要执行
    }
    for(k=0;k<15;k++)
    {
        buffer[k]=FLASH_ReadByte(FLASH_DATA_START_PHYSICAL_ADDRESS+k);
        FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);//一定要执行
    }
   
   LCD_PutString(100,200,buffer,CCOLOR,BCOLOR);
   
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
83条回答
carney
1楼-- · 2019-12-20 04:21
收藏备用,感谢分享,手里有片stm8,试试看
ZYBing
2楼-- · 2019-12-20 06:59
用003芯片,读取时持行FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);无法退出
很难发现
3楼-- · 2019-12-20 10:30
 精彩回答 2  元偷偷看……
shizt
4楼-- · 2019-12-20 14:51
收藏了,正好需要用到
nianhua_m
5楼-- · 2019-12-20 17:48
Sniperrabbit 发表于 2014-2-3 19:59
求例子。是否用eeprom关键字定义变量然后像普通变量那样使用就可以了?

eeprom  unsigned  char  data;

求解 这样是否可行?我看官方例程给的这个写法,再看看大家说的,我有点糊了~~

volatile __eeprom __no_init char  eep_u8;
volatile __eeprom __no_init short eep_u16;
volatile __eeprom __no_init long  eep_u32;

volatile  __no_init char  ram_u8;
volatile  __no_init short  ram_u16;
volatile  __no_init long  ram_u32;

void main( void )
{
  eep_u8=123;
  eep_u16=12345;
  eep_u32=123456789;
  
  ram_u8=eep_u8;
  ram_u16=eep_u16;
  ram_u32=eep_u32;
   
  while(1);

}
小小菜
6楼-- · 2019-12-20 21:56
kation122 发表于 2013-11-14 22:29
STM8 是真正的EEPROM ,和24CXXX 一样,是字节操作的,字节直接写就OK,使用非常方便。 ...

应该不是真正的eeprom,操作内部eeprom的时候单片机就停止了,连中断也是。

一周热门 更多>