使用eide cosmic环境新建的项目 不添加任何文件的情况下,可以编译,但是没有功能 使用文件里的IO寄存器依然是没有功能 我加入了st官方的驱动 使用io寄存器可以正常运行,未添加任何中断 加入了st官方的库文件 使用库函数无法运行,编译报错 使用原有的vector中断里,添加中断函数,依然是没有功能 求助,一个可以用的带中断带库函数的例程,或者请教下怎么配置
qq793909414
在 vector.c 文件里添加中断向量
先添加你的中断函数声明
extern void xxx_IRQ_Handler(void);
把你的中断向量函数名字,填到这个数组的对应元素位置就行了,_vectab 就是中断向量表
中断函数的定义要这样:
void @far @interrupt xxx_IRQ_Handler(void) { }
如果用的 stm8s 系列,要用 ST 的标准库,是有 项目模板的,可以直接用
admin 以上收到,我使用了官方的中断入口,如图,可以正常使用了
admin 你好大佬,目前遇到了问题,移植的IAR项目,移植过到cosmic后提示 #error clnk .\build\Debug\stm8.lkf:1 segment .text size overflow (1753) #error clnk .\build\Debug\stm8.lkf:1 segment .init size overflow (138) 没找到编译器优化选项在哪里修改,请教一下
代码空间超了
优化选项在构建配置里打开
admin 谢谢,我发现是我移植的时候lkf文件没有修改,导致+def RAM_ADDR=0x0000 +def RAM_SIZE=0x0800 +def SP_VALUE=0x07ff # stack top pointer value
+def ROM_ADDR=0x8000 +def ROM_SIZE=0x8000 这几个值错误
admin 你好大佬,又遇到了代码超的问题,但是我拿到stvd里面,用的也是cosmic的编译器就能编译通过 是否还是优化的问题的,需要在eide里面怎么设置呢
stvd 的默认构建配置可能跟 插件 不一样,需要调整为一致的
admin 只有memory的选项,而且修改过后依然编译不通过
modsl0 选 Stack Long (Code < 64K)
然后需要修改 C 运行时库,你在 stvd 上可以看到它默认选的啥,crtxxx.sm8
然后你打开 stm8.lkf 把这个库改一下,默认的库是 crtsi.sm8
应该是要填 crtsi0.sm8
因为手册里描述太少了,因此插件目前还没有做 自动根据选项选择运行时库 的功能,
需要自行手动修改