U int变量相乘出错 难道STM8不支持int变量相乘?

[复制链接]
3717|9
 楼主| ccelectric 发表于 2013-7-9 12:02 | 显示全部楼层 |阅读模式
STM8, UG, BUG, mb, rc
江湖急救:问下群里的哥们姐们,STM8S105K4  STM8能不能将两个unsigned int型变量相乘,怎么我一乘就提示出错呀
程序如下:
unsigned int a=0,b=400,c=300;
a=b*c;
就这么简单 就提示出错。能指点下吗?
故障提示如下
#error clnk Debug\sinwave.lkf:1 symbol c_lreg not defined (Debug\stm8_interrupt_vector.o )
#error clnk Debug\sinwave.lkf:1 symbol c_rtol not defined (Debug\stm8_interrupt_vector.o )
#error clnk Debug\sinwave.lkf:1 symbol c_uitolx not defined (Debug\stm8_interrupt_vector.o )
#error clnk Debug\sinwave.lkf:1 symbol c_imul not defined (Debug\stm8_interrupt_vector.o )
The command: "clnk -lD:\STMicroelectronics\COSMIC\CXSTM8_32K\Lib  -o Debug\sinwave.sm8 -mDebug\sinwave.map Debug\sinwave.lkf " has failed, the returned value is: 1
exit code=1.
soso 发表于 2013-7-9 12:33 | 显示全部楼层
訊息都不是在講 a=b*c;
你可以將
unsigned int a=0,b=400,c=300;a=b*c;
改成
unsigned int a=0,b=400,c=300;
再編譯看看.
airwill 发表于 2013-7-9 13:34 | 显示全部楼层
symbol c_imul not defined (Debug\stm8_interrupt_vector.o )

这是说, 库没有找到, 是编译器没有设置好啊
 楼主| ccelectric 发表于 2013-7-9 13:39 | 显示全部楼层
谢谢2楼的 现在情况改变了
在 主函数所在.C文件中定义unsigned int aa=0,bb=200,cc=200; 主函数循环里计算aa=bb*cc; 计算OK
可是在中断函数所在.C文件中定义aa,bb,cc,   在中断中计算aa=bb*cc;  就红色提示,不能编译
针对这个情况,我在主函数所在.c文件中定义包含aa=bb*cc的计算函数,然后extern一下,在中断中调用此函数,这样就把问题解决了。
两个.C文件的头文件中都加载了#include "stm8s105c_s.h"和#include "math.h" 。
最后问题: 很奇怪 为啥主函数所在.C那里可以计算,而中断函数那里不能计算?
 楼主| ccelectric 发表于 2013-7-9 13:41 | 显示全部楼层
感觉3楼是正解,就是没有调用变量乘法的库,可是后来的情况还是有,请参考4楼我的描述
trumpxp 发表于 2013-7-9 18:33 | 显示全部楼层
版主的应该是不错的    顶一个   很不错
trumpxp 发表于 2013-7-9 18:33 | 显示全部楼层
还是版主给力   很不错   
 楼主| ccelectric 发表于 2013-8-8 21:31 | 显示全部楼层
airwill 发表于 2013-7-9 13:34
symbol c_imul not defined (Debug\stm8_interrupt_vector.o )

这是说, 库没有找到, 是编译器没有设置好啊 ...

https://bbs.21ic.com/forum.php?mod=viewthread&tid=581477
版主 这个问题我还是没解决 能否指点一下
趴趴熊 发表于 2013-8-12 10:46 | 显示全部楼层
COSMIC 垃圾, 不关STM8的事
oldpig 发表于 2013-11-7 18:02 | 显示全部楼层
我现在也碰到了同样的问题。如果不想把这个函数定义在主函数里,该怎样解决呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部