打印
[STM8]

stvp 烧写

[复制链接]
3903|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

iar写的程序,生成.hex格式,用stvp烧写,出现这样的提示,不知道什么原因,怎样解决?
沙发
zoulinqi110|  楼主 | 2015-1-27 11:47 | 只看该作者

个人总结:延迟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

使用特权

评论回复
板凳
grant_jx| | 2015-1-27 12:33 | 只看该作者
STVP是通过SWIM控制Flash控制寄存器的,和你的代码没关系啊。看不懂你的2楼和标题有啥牵连。

使用特权

评论回复
地板
zoulinqi110|  楼主 | 2015-1-27 13:10 | 只看该作者
这段是复制别人的解释,我按这种方法解决了我现在的问题,就是在main函数调用EEPROM之前的时候做了延时,时间长短可以自己试试,我的是20ms,延时可以解决问题,但是在实际应用中得自己把握,看会不会影响到你别的地方。

使用特权

评论回复
5
zoulinqi110|  楼主 | 2015-1-27 13:15 | 只看该作者
这段是复制别人的解释,我按这种方法解决了我现在的问题,就是在main函数调用EEPROM之前的时候做了延时,时间长短可以自己试试,我的是20ms,延时可以解决问题,但是在实际应用中得自己把握,看会不会影响到你别的地方。

使用特权

评论回复
6
panjuqi2015| | 2015-4-9 19:36 | 只看该作者
刚买个st仿真器,在研究怎么用

使用特权

评论回复
7
xk8000000| | 2016-11-19 10:39 | 只看该作者
有没有能把 mub格式转换成 hex格式的软件?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

62

帖子

0

粉丝