本帖最后由 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;
才可以。 |