打印
[MCU]

晕了,STM8S读取EEPROM时,偏移了3个字节,这是什么鬼呀

[复制链接]
1069|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kuheye|  楼主 | 2020-7-28 22:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
使用STM8S207CBT6
定义EEPROM,如下:
//红色
#pragma location=0x4000
__root const char EePwmR0 = 0;
#pragma location=0x4001
__root const char EePwmG0 = 1;
#pragma location=0x4002
__root const char EePwmB0 = 2;
#pragma location=0x4003
__root const char EePwmStep0 = 3;//过渡时间=20*400us*256=2.048s
#pragma location=0x4004
__root const char EePwmKeep0H = 4;//保持时间10s
#pragma location=0x4005
__root const char EePwmKeep0L = 5;//保持时间10s

程序中,读取EEPROM的代码如下:
  PwmNewR = *(unsigned long*)0x4000;
  PwmNewG = *(unsigned long*)0x4001;
  PwmNewB = *(unsigned long*)0x4002;
  PwmStep = *(unsigned long*)0x4003;
  PwmKeep = *(unsigned long*)0x4004;
  PwmKeep<<=8;
  PwmKeep |= *(unsigned long*)0x004005;

仿真时,得到的数据,偏偏无法读取前面3个字节,本来是从0x4000开始读取,结果是从0x4003开始读取的
不知道撞什么鬼,
按说从0x4000开始读取,得到的结果应该是:0x00,0x01,0x02...
而实际仿真的结果是0x03,0x04,0x05...
仿真时可以看到EEPROM定义的数据没错,就是读不出来,
不会贴图

使用特权

评论回复

相关帖子

沙发
kuheye|  楼主 | 2020-7-28 22:58 | 只看该作者

如上图,读取的数据,偏移了3 个字节

使用特权

评论回复
板凳
xyz549040622| | 2020-7-29 07:58 | 只看该作者
STM8的eepROM用过,没出现你说的问题,建议你用串口输出,不要在线debug再试试。

使用特权

评论回复
地板
ayb_ice| | 2020-7-29 08:24 | 只看该作者
kuheye 发表于 2020-7-28 22:58
如上图,读取的数据,偏移了3 个字节

应该是*(unsigned char*)吧

使用特权

评论回复
5
kuheye|  楼主 | 2020-7-29 10:30 | 只看该作者
ayb_ice 发表于 2020-7-29 08:24
应该是*(unsigned char*)吧

应该是这个问题,拷贝以前的代码,不小心,没有将long更改为char
改正后,仿真通过

使用特权

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

本版积分规则

31

主题

88

帖子

2

粉丝