OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4022|回复: 4

STM8写数据到内部EEPROM,

[复制链接]

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2016-7-9
在线时间
8 小时
发表于 2016-7-19 17:04:29 | 显示全部楼层 |阅读模式
1金钱
  while((FLASH_IAPSR&0x04)==0);会在写数据后在这个while中跳不出来,应该是FLASH_IAPSR第二位的原因,求助解决办法,感谢

这是找到的状态寄存器的位

这是找到的状态寄存器的位
~~~



[mw_shl_code=c,true]void eeprom_init(void)
{
  FLASH_CR1=0x00;
  FLASH_CR2=0x00;
  FLASH_NCR2=0xFF;
  FLASH_DUKR=0xae;  //锁1密匙
  FLASH_DUKR=0X56;  //锁2密匙
  while((FLASH_IAPSR&0x08)==0);
//等待解密就绪
}

//EEPROM指定地址写入一个数据
void eeprom_write(unsigned char  addr, unsigned char  dat)
{
  unsigned char  *p;
  p=(unsigned char  *)(0x4000+addr);
  *p=dat;
  while((FLASH_IAPSR&0x04)==0); //等待写操作成功
}
[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

/******************************************************************************* * 文件名 :flash_eeprom.c * 描述 :内部EEPROM读写文件 * 实验平台:STM8S105C6最小系统板 * 库版本 :V2.1.0 * 作者 :liuyong *修改时间 :2014-03-07 *******************************************************************************/ #include "flash_eeprom.h" /**************************************** ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1293
金钱
1293
注册时间
2013-3-14
在线时间
62 小时
发表于 2016-7-19 17:04:30 | 显示全部楼层
/*******************************************************************************
* 文件名  :flash_eeprom.c
* 描述    :内部EEPROM读写文件
* 实验平台:STM8S105C6最小系统板
* 库版本  :V2.1.0
* 作者    :liuyong
*修改时间 :2014-03-07
*******************************************************************************/
#include "flash_eeprom.h"

/*******************************************************************************
* 名称: void FlashEeprom_Config(void)
* 功能: 设置固定的编程时间
* 形参: 无
* 返回: 无
* 说明: 在main.c文件调用
******************************************************************************/
void FlashEeprom_Config(void)//
{
        FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
}
/*******************************************************************************
* 名称: void FlashEeprom_WriteByte(INT16U Address,INT8U Data)
* 功能: flasheeprom写一个字节函数
* 形参: Address:写入的地址
         Data:待写入的数据
* 返回: 无
* 说明: 在main.c和key.c文件调用
******************************************************************************/
void FlashEeprom_WriteByte(INT16U Address,INT8U Data)
{
        FLASH_Unlock(FLASH_MEMTYPE_DATA);
        FLASH_ProgramByte(Address,Data);
        FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
        FLASH_Lock(FLASH_MEMTYPE_DATA);
}
/*******************************************************************************
* 名称: INT8U FlashEeprom_ReadByte(INT16U Address)
* 功能: flasheeprom读一个字节函数
* 形参: Address:读取数据的地址
* 返回: 返回想读取的数据的值
* 说明: 在main.c和key.c文件调用
******************************************************************************/
INT8U FlashEeprom_ReadByte(INT16U Address)
{
        INT8U Data;
       
        Data = FLASH_ReadByte(Address);
        return Data;
}

这是我用的库函数编写的EEPROM程序,用了几年,没出现过问题。如果不想用库的话,直接去库函数里面把库函数的代码复制出来就和寄存器操作差不多了。
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165051
金钱
165051
注册时间
2010-12-1
在线时间
2103 小时
发表于 2016-7-20 21:24:29 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2014-12-13
在线时间
89 小时
发表于 2016-7-25 21:34:15 | 显示全部楼层
你的代码没问题啊
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2016-7-9
在线时间
8 小时
 楼主| 发表于 2016-7-27 10:09:14 | 显示全部楼层
liuyongliuyong 发表于 2016-7-26 08:07
/*******************************************************************************
* 文件名  :flash ...

好的,谢谢~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-7-1 04:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表