打印

CXSTM8,不支持长的子函数?

[复制链接]
5169|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hys0401|  楼主 | 2012-7-18 12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个子函数有420多行,编译不过。将此函数的内容直接复制到MAIN中,编译就成功。太怪异了。好在这个函数只调用了一次,如果调用多次,那就太坑跌了。

STVD+CXSTM8,是不是哪里要设定一下?

CXSTM8中有像KEIL C51那样的bit位操作数据类型吗?现在用C的操作符来置位清零觉得不是很爽。

还有,要下载进单片机的文件是不是要生成HEX文件?以前没玩过这些,真的不懂。

程序是从KEIL C51移植过的,KEIL中没这么多问题。
沙发
原野之狼| | 2012-7-18 12:40 | 只看该作者
错误信息贴出来

使用特权

评论回复
板凳
figo20042005| | 2012-7-18 12:43 | 只看该作者
你子函数调用多不?是不是刚好超过堆栈层数

使用特权

评论回复
地板
hys0401|  楼主 | 2012-7-18 13:34 | 只看该作者
2# 原野之狼
#error cpstm8 main.c:600(12) missing prototype
main.c:
The command: "cxstm8 +mods0 +debug -pxp -no -pp -l -i"C:\Program Files\COSMIC\CXSTM8\Hstm8"  -clDebug\ -coDebug\ main.c" has failed, the returned value is: 1
exit code=1.
main.o - 3 error(s), 0 warning(s)

话说第600行就是这个子函数调用的那一行。

使用特权

评论回复
5
hys0401|  楼主 | 2012-7-18 13:40 | 只看该作者
本帖最后由 hys0401 于 2012-7-18 13:52 编辑

3# figo20042005
子函数不多,程序总共才1000行左右,就出错这个函数就占了400多行。这个出错函数内部总共只调用了三个函数,都不长,最多也就十几二十行;而且出错函数内部只调用这三个函数,没有别的语句。三个函数内部都未调用其他函数。

我将MEMOEY MODELS从SHORT STACK(+MODS0)改成LONG STACK(+MODSL0)也不行。

使用特权

评论回复
6
hys0401|  楼主 | 2012-7-18 13:45 | 只看该作者
本帖最后由 hys0401 于 2012-7-18 13:48 编辑

程序是从KEIL C51移植过来的,只修改了头文件和底层四个函数,就是系统时钟和GPIO部分。这个编译出错的函数不是这四个底层函数之一。

KEIL C51方案能稳定运行。

移植到STM8L后,想不到还在纸上谈兵的阶段就出问题了。

使用特权

评论回复
7
figo20042005| | 2012-7-18 14:28 | 只看该作者
是不是你这个函数在的定义,STM8里不识别

使用特权

评论回复
8
原野之狼| | 2012-7-18 14:52 | 只看该作者
从错误信息来看  缺失对你所调用函数的声明
另外一个函数写400行 这很不靠谱  除非是简单结构

使用特权

评论回复
9
hys0401|  楼主 | 2012-7-18 15:53 | 只看该作者
8# 原野之狼
我搞错了,不是400多行,是800多行,就是SPI接口对寄存器的初始化。一个写寄存器地址,一个写参数。另一个延时函数。

使用特权

评论回复
10
hys0401|  楼主 | 2012-7-18 15:55 | 只看该作者
本帖最后由 hys0401 于 2012-7-18 16:02 编辑

7# figo20042005
在KEIL C里面是没有问题的。

查出问题了,原来函数是:void XXXX()这种写法,在KEIL C里面是没有问题的;在CXSTM8中就通不过。改成:void XXXX(void)就好了。

多谢楼上各位!

使用特权

评论回复
11
hys0401|  楼主 | 2012-7-18 16:04 | 只看该作者
CXSTM8中有像KEIL C51那样的bit位操作数据类型吗?

使用特权

评论回复
12
Cortex-M0| | 2012-7-18 17:06 | 只看该作者
STM8有类似的bit位操作数据类型

使用特权

评论回复
13
ningjing1e| | 2012-7-19 10:57 | 只看该作者
在KEIL C里面是没有问题的。

使用特权

评论回复
14
dbykqsy| | 2012-7-19 11:01 | 只看该作者
你子函数调用多不?是不是刚好超过堆栈层数?

使用特权

评论回复
15
lw3530| | 2013-11-13 17:54 | 只看该作者
Cortex-M0 发表于 2012-7-18 17:06
STM8有类似的bit位操作数据类型

应该怎么写呢

使用特权

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

本版积分规则

7

主题

224

帖子

2

粉丝