发现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条回答
ndt2000
1楼-- · 2019-12-14 11:23
确实长知识了
tarzar
2楼-- · 2019-12-14 15:54
7楼的解释得非常好,学习了
ssclark1988
3楼-- · 2019-12-14 17:57
很方便,我是直接当内存来使用的
chencc8
4楼-- · 2019-12-14 22:27
当内存来用还是夸张了点,地址分配上有点麻烦,我用的是一个大的结构体,然后用offsetof(s,m)宏来查找偏移量
不过结构体的大小貌似只能达到无符号整形所能容纳的数量,51的话是65536 stm8应该也是这个,不过对EEP来说也够了
wkman
5楼-- · 2019-12-15 03:46
 精彩回答 2  元偷偷看……
mtswz.213
6楼-- · 2019-12-15 05:37
用STVD直接定义数据在EEPROM,根本就不需要自己学函数,直接定义就行了,是可以单个字节写的,这个写EEPRR0M时,内核会停2MS左右,反正我用STVD是这样,跟单片机高端低端没关系!

一周热门 更多>