找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19547|回复: 7
打印 上一主题 下一主题
收起左侧

STM8S单片机EEPROM烧录错误:Verify failed at address 0xXXXX

[复制链接]
跳转到指定楼层
楼主
ID:60076 发表于 2014-5-1 02:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
个人总结:延迟21毫秒后再操作EEPROM,延迟20毫秒烧录都会报错。(STM8S003F3)
我上个月也出现了这样的问题,对出现问题的的工程进行分析。
发现,在main函数中直接解除EEPROM的锁定,然后对特定的EEPROM地址进行赋值,只要赋的值不是0,就会报错,
直接插入CLR或者LD指令操作EEPROM地址,发现CLR指令不会报错,LD的会报错。也就是说,清零没问题,赋值会有问题


今天,使用STVP下载的时候再次出现这样的问题,对多处修改进行分析。发现原来是我用的配置初始化函数中ConfigInit(),
有类似这样的语句*EEP_Config =ROM_Config(两个都是结构体,其中前面一个指向EEP,后一个在定义的时候带有const)。

今天早上之前都没有这个错误的,经查出现错误的原因是:以前我是在菜单状态机的第一个状态,在启动后一秒钟调用ConfigInit(),
而今天早上我是将ConfigInit()函数放到了第一个状态的入口动作上,也就是说在菜单状态机被初始化的时候,ConfigInit()函数就会被调用。
同时我是将初始化菜单状态机的函数,直接放在main函数中的,即上电后马上调用ConfigInit()!
将ConfigInit()函数延后执行后,程序下载恢复正常。

我才猜测是这样的:启动后的一段时间内不能对EEPROM进行赋值,要不然就会被报错。
结合在STVP下载的时候,能看到LCD狂闪,推论如下:
STVP在下载的时候,程序是可以断断续续的运行的,而在期间如果执行了赋值EEPROM的动作,那么STVP在随后对EEPROM的
检测的时候,发现并非全是0,就会将不是0的那个地址用下面的语句报错:
Verify failed at address0xXXXX


希望能帮到以后遇到这个问题的人~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:64390 发表于 2014-7-25 18:29 | 只看该作者
为了赞一下楼主,申请了论坛账号,今天也遇到了这个问题,纠结了很久,感谢楼主发帖。这个玩意应该是STVP的问题了,程序本身可以正常运行。
回复

使用道具 举报

板凳
ID:64390 发表于 2014-7-25 18:29 | 只看该作者
为了赞一下楼主,申请了论坛账号,今天也遇到了这个问题,纠结了很久,感谢楼主发帖。这个玩意应该是STVP的问题了,程序本身可以正常运行。
回复

使用道具 举报

地板
ID:64524 发表于 2014-7-29 13:06 | 只看该作者
帮楼主顶一下    今天我也遇到了这个问题
回复

使用道具 举报

5#
ID:69358 发表于 2014-11-24 17:21 | 只看该作者
我今天也遇到这个问题,如果不延时,后面的初始化都进行不下去
回复

使用道具 举报

6#
ID:225404 发表于 2017-8-7 10:44 | 只看该作者
我也遇到这个问题了,感谢楼主慷慨分享!
回复

使用道具 举报

7#
ID:225404 发表于 2017-8-7 10:45 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
ID:858007 发表于 2020-12-10 11:39 | 只看该作者
谢谢楼主  我的是207S8  22ms 有时候也会出问题 直接加到50ms延迟了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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