stm8--遇到问题求助各位!!谢谢!!!

dg00010170   2010-4-19 14:33 楼主

第一次用ST单片机编写程序,使用STM8S105K4B6

开发环境为 ST Visual Develop Version 4.1.2
当项目的stm8_interrupt_vector.c中断文件加入main.h头文件后
出现如下错误,请教各位这些错误该怎么解决?
谢谢!!

Running Linker

clnk -m Debug\sd-516.map -lD:\CXSTM8\Lib
-o Debug\sd-516.sm8 Debug\sd-516.lkf

#error clnk Debug\sd-516.lkf:1 segments .const (0x8080-0x8878) and .const (0x8000-0x81c2) overlap


The command: "clnk -m Debug\sd-516.map -lD:\CXSTM8\Lib
-o Debug\sd-516.sm8 Debug\sd-516.lkf " has failed, the returned value is: 1

exit code=1.

sd-516.elf - 3 error(s), 0 warning(s)

回复评论 (12)

                                 请不要把stm8_interrupt_vector.c中断文件加入main.h头文件。
点赞  2010-4-19 14:47
谢谢 版主。不加main.h头文件,变量和寄存器未定义报错。
继续请教各位呀!!谢谢先^-^
点赞  2010-4-19 17:07
请不要把stm8_interrupt_vector.c中断文件加入到main.h头文件里面

没有说不加main.h头文件。
点赞  2010-4-19 17:19
                                 main.h函数肯定是要添加的
点赞  2010-4-19 21:21
                                 两者分开不就可以了,为什么一定要放在一起,给人感觉不是很混乱
点赞  2010-4-19 21:43
谢谢yybj 和txcy。
问题昨天下午下班时已经解决。该错误为中断地址与程序代码地址部分重叠,经研究编译器,在编译器中把Code代码起始地址0x8080改为0x8200 问题即解决!
再次谢谢各位的相助!
点赞  2010-4-20 10:34
                                 中断向量表本就是0x8000到0x807F范围,和Code不冲突啊。
点赞  2010-4-20 20:49
                                 中断向量表地址我一般都会轻易去改它,不太懂,改了怕出问题就不好找了
点赞  2010-4-20 21:18
我想问题如下:
  以前用东芝芯片编写程序,有把常量数组定义在.h的头文件里,东芝编译器能顺利编译通过。移植程序时,在中断文件中加入定有常量数组的.h头文件时, ST Visual Develop Version 4.1.2 编译器把这些常量数组定义到了从0x8000开始的中断向量地址。造成了中断地址(0x8000-0x81c2)与代码地址(0x8080-0x8878)部分重叠。
   把常量数组定义移到使用到该数组的.c文件中,即解决问题。不用更改code代码起始地址。
  我想是编译器的不同处理方式造成这个错误!
  再次谢谢各位的关注!
点赞  2010-4-20 22:07
                                 路过。学习...
点赞  2010-4-21 07:56
                                 学习。。。c的没怎么玩过。。
点赞  2010-4-21 22:45
                                 好像ST的中断文件不是声明,而是定义吧
点赞  2010-5-8 08:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复