8147|13

89

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教EEPROM问题,谢谢! [复制链接]

STVD+Cosmic CxSTM8 32K 4.3.4(石皮 角刀牛 片反)

;==========================================
    __eep_wall_data[__window_x].__eep_window_ptr += 1;

    __eep_wall_data[__window_x].__eep_window_ptr++;

这样写都有问题,如果后面所示,如下面所写则编译通过

    __eep_wall_data[__window_x].__eep_window_ptr = 1;


这是变量定义:
@eeprom struct __eep_wall
{
    unsigned char __eep_out_fx;                                    //输出换向
    unsigned char __eep_out_lx;                                    //输出类型
    unsigned char __eep_wk_sb_k;                                   //外控开关类型
    unsigned char __eep_window_ptr;                                //保存通道位置
    unsigned char __eep_window[__cst_window_len][__cst_code_len];  //保存8个通道号
    unsigned int  __eep_crc16;                                     //数据CRC16校验结果
} __eep_wall_data[3] =
{
    0
}
;

那位知道是怎么回事?
看其他人写EEPROM都用:*((@far u8*) Address) = Data;不知道是何原因?
谢谢!

;==========================================




cgstm8.exex 已停止工作(提不窗口显示)




----------- Project 2010-05-21-mk100-stm8s103f2 - STM8 Cosmic - Configuration Debug -------------
Removing intermediate files ... Done!
----------- Project 2010-05-21-mk100-stm8s103f2 - STM8 Cosmic - Configuration Debug -------------
Compiling main.c...
cxstm8 +debug -pxp -no -l +mods0 -pp -i"C:\Program Files\COSMIC\CXSTM8\Hstm8"  -clDebug\ -coDebug\ main.c
main.c:


;==================
这段是红色字体


The command: "cxstm8 +debug -pxp -no -l +mods0 -pp -i"C:\Program Files\COSMIC\CXSTM8\Hstm8"  -clDebug\ -coDebug\ main.c " has failed, the returned value is: 1
exit code=1.
;==================


2010-05-21-mk100-stm8s103f2.elf - 2 error(s), 0 warning(s)
此帖出自stm32/stm8论坛

最新回复

                                 嗯! 这个有检查的!  详情 回复 发表于 2010-6-15 14:38
点赞 关注
 

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 那位帮忙解释一下,谢谢!
此帖出自stm32/stm8论坛
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 编译器提示什么问题?
此帖出自stm32/stm8论坛
 
 

回复

89

帖子

0

TA的资源

禁止访问

4
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
估计编译器不允许在EEPROM区域进行运算操作,只允许进行单纯的读或写操作。

你试试看这样是否可以:

temp = __eep_wall_data[__window_x].__eep_window_ptr + 1;
__eep_wall_data[__window_x].__eep_window_ptr  = temp;
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
这样是可以的!

另外我看其他人写EEPROM都用:*((@far u8*) Address) = Data;不知道是何原因?这句子具体意思能解释一下吗?

谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 这是C语言的类型转换+指针操作。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
但地址不是16位的吗(0x4000)?为什么要用转为  U8   呢?另外   @far    在这里是什么意思?
还有劳版主详细解释一下!谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 
far 表示长地址类型。
u8 表示Address指向的目标是u8类型。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 有一点点明白了!万分感谢版主!
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 运算操作最好不要在EEPROM进行,在外面进行嘛
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
发现STVD+Cosmic CxSTM8 32K 4.3.4的吐血问题,给大家提个醒:

这样子写:

__eep_wall_data[(__window_x + 1)] = __eep_wall_data[__window_x];
__eep_wall_data[(__window_x + 2)] = __eep_wall_data[__window_x];

运行结果是错误的!

这样子写:

__eep_wall_data[1] = __eep_wall_data[0];
__eep_wall_data[2] = __eep_wall_data[0];

或者这样子写:

__eep_wall_data[__window_x] = __eep_wall_data[(__window_x + 1)];
__eep_wall_data[__window_x] = __eep_wall_data[(__window_x + 2)];

运行结果是正确的!
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

13
 
发现STVD+Cosmic CxSTM8 32K 4.3.4的吐血问题,给大家提个醒:

这样子写:

__eep_wall_data[(__window_x + 1)] = __eep_wall_data[__window_x];
__eep_wall_data[(__window_x + 2)] = __eep_wall_data[__window ...
都有问题
STM8系列的EEPROM在使用时一定要注意,在进行一次写操作前要确保上一次写操作已经完成。否则即使你的写入是成功的也有潜在的问题:
当进行EEPROM写入操作时,前一次写入还没有完成,那MCU会被HOLD住,期间不会响应任何中断,连续写入2次,那MCU就会被HOLD12ms.
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 嗯! 这个有检查的!
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表