打印
[STM8]

STM8当定义数组到EEPROM中时,如果选择非debgu优化编译出错

[复制链接]
4226|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhseedling|  楼主 | 2012-7-11 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhseedling 于 2012-7-11 22:32 编辑

首先按照cosmic手册里说定义到eeprom中用关键字@eeprom
我发现使用

@eeprom u8 eepromVariables[8] @0x4000;


u8 eepromVariables[8] @0x4000;

两句效果完全相同,

声明的时候使用

extern u8 eepromVariables[8] @0x4000;

就没有问题。


当然了,这是编译时优化选择“Disable for Debugging”。

如果优化选“最快执行速度”或“最小代码大小”就会在声明变量的地方发生编译错误

错误提示相同,为以下两句

#error castm8 C:\Users\HaHi\AppData\Local\Temp\sehk.cx1:1459
symbol exgwx not defined
#error castm8 C:\Users\HaHi\AppData\Local\Temp\sehk.cx1:1442
bad comment delimiter

可是那个文件根本不存在。



在此分享下如何在STM8中声明eeprom变量,虽然网上有很多定义变量到eeprom的例子,可是我却没发现声明的方法,因为多个c文件之间必须声明。

但是使用

@eeprom u8 a;

使用以下声明方法

@eeprom extern u8 a;

extern @eeprom u8 a;

extern u8 a;

extern u8 a @eeprom;

都不行,总是说零页变量在0x4000地址之类的错误,但如果不声明只在定义的地方用就没有问题。


后来发现必须使用上面那种方法,也就是加上地址

@eeprom u8 a @0x4000;

声明时用

extern u8 a @0x4000;

才可以。
沙发
zhseedling|  楼主 | 2012-7-11 22:33 | 只看该作者
论坛出问题了?怎么标题都不显示标题,而显示的是内容的一部分

使用特权

评论回复
板凳
zhseedling|  楼主 | 2012-7-12 13:23 | 只看该作者
自己顶一下吧

使用特权

评论回复
地板
zhseedling|  楼主 | 2012-7-13 19:43 | 只看该作者
:victory:

使用特权

评论回复
5
zhseedling|  楼主 | 2012-9-3 13:03 | 只看该作者
看来都木有人用stm8呢

使用特权

评论回复
6
lufengfeng| | 2016-12-30 09:37 | 只看该作者
假如你前面用了“@eeprom u8 eepromVariables[8] @0x4000;”来定义。那么必须用这个语句来声明:“extern @eeprom u8 eepromVariables[8] @0x4000;”。但是如果用“@eeprom u8 eepromVariables[8];”来定义,那么这样声明“extern @eeprom u8 eepromVariables[8] ;”就可以了,也就是说,在声明时只需按原样在前面加上“extern”即可,当然在定义是有赋值的要在声明时将等号后面去掉。

使用特权

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

本版积分规则

0

主题

27

帖子

1

粉丝