你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于stm8单片机EEPROM问题

[复制链接]
woldcow 提问时间:2009-7-8 12:15 /
怎么通过C语言读,写STM8单片机的EEPROM内容啊,急!!哪位高人能不能发个例程。要用到哪些寄存器,分别是怎么设置呢?求助,急。。。
woldcow@163.com
收藏 评论8 发布时间:2009-7-8 12:15

举报

8个回答
xhy_axb 回答时间:2009-9-7 08:44:37

RE:关于stm8单片机EEPROM问题

我也遇到你的问题,希望做过的提供代码,方便大家使用
zpwang 回答时间:2009-12-17 00:14:30

RE:关于stm8单片机EEPROM问题

从STM8的编程手册来看,里面的EEPROM主要是用于加密之类应用的,貌似FLASH被读写保护后EEPROM同时被保护。在被读写保护后可能在应用程序中可能我发对其操作。不知我的理解是否正确。
t2230510 回答时间:2010-4-3 21:30:42

回复:关于stm8单片机EEPROM问题

回复第 3 楼 zpwang于2009-12-16 16:14:30发表:
从STM8的编程手册来看,里面的EEPROM主要是用于加密之类应用的,貌似FLASH被读写保护后EEPROM同时被保护。在被读写保护后可能在应用程序中可能我发对其操作。不知我的理解是否正确。 

EEPROM读写前要解锁的。这个很简单,在技术文档里讲得很清楚。我用一个宏定义来代表EEPROM单元。
#define  EEPROM_BASE_ADDR     0x4000
#define  ADDRESS(i)       (*(volatile unsigned char *)(EEPROM_BASE_ADDR + i))
读0x4000单元,用 x =  ADDRESS(0); 读0x4001单元,用 x =  ADDRESS(1);。。。。。。。。。。
写0x4000单元,用 ADDRESS(0)  = x; 写0x4001单元,用 ADDRESS(1)  = x; 。。。。。。。。。。
调试时,用  memory   窗口可以看到数据是否写进去。
 
 
woldcow 回答时间:2010-4-8 11:05:09

RE:关于stm8单片机EEPROM问题

#include "public_include.h"

/*=========================================================
* 函 数 名: uchar f_MCU_UnLock_EEROM(void)
* 功能描述: EEROM解锁
=========================================================*/
uchar f_MCU_UnLock_EEROM(void)
{
        uint iCnt;
        FLASH_CR1|=0x01; //设置为标准编程时间
        if(FLASH_IAPSR&0x08)return true; //已经解锁
        else
        {
                FLASH_DUKR=0xAE;                              
                FLASH_DUKR=0x56;
        }
        while(!(FLASH_IAPSR&0x08))
        {
                iCnt++;
                if(iCnt>=65500)
                {
                        return false;
                }
        }
        return true;
}
/*=========================================================
* 函 数 名: void f_MCU_WriteByte(uchar ADD,uchar iData)
* 功能描述: 向EEROM写入一个字节
=========================================================*/
void f_MCU_WriteByte(uchar ADD,uchar iData)
{
        ulong Start_ADD;
        Start_ADD=FLASH_DATA_START_ADD+ADD;
        *((@far uchar*)(Start_ADD))= iData;
}
/*=========================================================
* 函 数 名: uchar f_MCU_ReadByte(uchar ADD)
* 功能描述: 向EEROM读出一个字节
=========================================================*/
uchar f_MCU_ReadByte(uchar ADD)
{
        ulong Start_ADD;
        Start_ADD=FLASH_DATA_START_ADD+ ADD;
        return(*((@far uchar*) Start_ADD));
}
/*=========================================================
* 函 数 名: void f_MCU_Lock_EEROM(void)
* 功能描述: EEROM上锁
=========================================================*/
void f_MCU_Lock_EEROM(void)
{
        FLASH_IAPSR&=0xf7;
}
woldcow 回答时间:2010-4-8 11:05:47

RE:关于stm8单片机EEPROM问题

#define FLASH_PROG_START_ADD ((ulong)0x008000) /*!< Program memory: start address */
#define FLASH_PROG_END_ADD   ((ulong)0x027FFF) /*!< Program memory: end address */
#define FLASH_PROG_BLOCKS_NUMBER          ((uint)1024)     /*!< Program memory: total number of blocks */
#define FLASH_DATA_START_ADD  ((ulong)0x004000) /*!< Data EEPROM memory: start address */
#define FLASH_DATA_END_ADDR   ((ulong)0x0047FF) /*!< Data EEPROM memory: end address */
#define FLASH_DATA_BLOCKS_NUMBER          ((uint)16)       /*!< Data EEPROM memory: total number of blocks */
woldcow 回答时间:2010-4-8 11:07:21

RE:关于stm8单片机EEPROM问题

就样就可以了。后面这个定义是个宏,加到头文件中就可以了
yangjiawei1223 回答时间:2014-6-21 15:59:14

回复:关于stm8单片机EEPROM问题

回复第 4 楼 于2010-04-03 21:30:42发表:
回复第 3 楼 zpwang于2009-12-16 16:14:30发表:
从STM8的编程手册来看,里面的EEPROM主要是用于加密之类应用的,貌似FLASH被读写保护后EEPROM同时被保护。在被读写保护后可能在应用程序中可能我发对其操作。不知我的理解是否正确。 

EEPROM读写前要解锁的。这个很简单,在技术文档里讲得很清楚。我用一个宏定义来代表EEPROM单元。
#define  EEPROM_BASE_ADDR     0x4000
#define  ADDRESS(i)       (*(volatile unsigned char *)(EEPROM_BASE_ADDR + i))
读0x4000单元,用 x =  ADDRESS(0); 读0x4001单元,用 x =  ADDRESS(1);。。。。。。。。。。
写0x4000单元,用 ADDRESS(0)  = x; 写0x4001单元,用 ADDRESS(1)  = x; 。。。。。。。。。。
调试时,用  memory   窗口可以看到数据是否写进去。
 
 写得倒是简单,但是初学的不知道这其中的工作过程!
 
petter-345073 回答时间:2014-9-19 10:20:52

RE:关于stm8单片机EEPROM问题

留记号

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版