stm32f103使用eeprom作为寄存器,断电重启后保存的数据消失,请大神看下程序是否有问题?

voidI2C_XieRu(void)//保存数据到EEPROM{num_I2C++;if(num_I2C>=20)//最多保存20组数据num_I2C=0;I2c_Bu... void I2C_XieRu(void)//保存数据到EEPROM
{

num_I2C++;
if(num_I2C>=20)//最多保存20组数据
num_I2C=0;
I2c_Buf_Write[240]=num_I2C;//写入起始标志

I2c_Buf_Write[num_I2C*12+0]=DataX%256;
I2c_Buf_Write[num_I2C*12+1]=DataX/256;
I2c_Buf_Write[num_I2C*12+2]=DataY%256;
I2c_Buf_Write[num_I2C*12+3]=DataY/256;
I2c_Buf_Write[num_I2C*12+4]=acccy%256;
I2c_Buf_Write[num_I2C*12+5]=acccy/256;
I2c_Buf_Write[num_I2C*12+6]=calendar.min;//分
I2c_Buf_Write[num_I2C*12+7]=calendar.hour;//时
I2c_Buf_Write[num_I2C*12+8]=calendar.w_date;//日
I2c_Buf_Write[num_I2C*12+9]=calendar.w_month;//月
I2c_Buf_Write[num_I2C*12+10]=calendar.w_year%256;//年L
I2c_Buf_Write[num_I2C*12+11]=calendar.w_year/256;//年H
AT24CXX_Write( EEP_Firstpage, I2c_Buf_Write, 256); //写入
}
void I2C_DuChu(void)//读出EEPROM数据
{
u8 i;
AT24CXX_Read( EEP_Firstpage, I2c_Buf_Write, 256); //读出

for(i=0;i<240;i++)
{
I2c_Buf_Write[i]=I2c_Buf_Read[i];
}
num_I2C=I2c_Buf_Read[240];
}
展开
 我来答
大维
2019-07-24 · 郑州西亚斯学院副教授
大维
郑州西亚斯学院副教授
采纳数:111 获赞数:366
发表论文14篇。编写教材5部。擅长微控制器应用技术和网络技术

向TA提问 私信TA
展开全部
系统上电之后,要看一下数据是否写入正确。就是写入后会读,看看写入的数据是不是正确,如果没问题说明不是数据写入和读出的问题。
看你的程序应该是保存时间信息,我猜测是不是你的程序在初始化的时候每次都写入了一个固定的值,造成断电之后,再上电把之前断电前的信息给覆盖了,造成了掉电EEPROM信息丢失的假象。
建议把你的程序完整的放上来,或者是把初始化程序和主程序都放上来,这样好分析一些。
更多追问追答
追问
大神你有邮箱吗,我把程序单独发给你,你帮我看下可以吗
追答
david_linux@163.com
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式