[STM8] 指针跑飞

[复制链接]
1590|16
 楼主| wangzsa 发表于 2014-10-31 10:02 | 显示全部楼层 |阅读模式
写了一个stm8208的CAN通讯程序,一次性传输了大量数据,一点问题没有。
后来,我在主程序中加了这么一句话:
temp =(u8)  (temp2);
其中,temp定义的是u8类型,而temp2定义的是float类型,仅仅是这么一个强制类型转换。。。
就会发现,can通讯传输数据的过程中,就会出现指针跑飞的现象,屏蔽这一句话,完全没有问题了。
 楼主| wangzsa 发表于 2014-10-31 10:02 | 显示全部楼层
can通讯是通过中断来实现的,而且经测试,强制类型转换的结果也是正确的
langgq 发表于 2014-10-31 10:04 | 显示全部楼层
是编译器的原因,还是单片机本身内核bug??
 楼主| wangzsa 发表于 2014-10-31 10:04 | 显示全部楼层
我也不知道啊
zhuww 发表于 2014-10-31 10:06 | 显示全部楼层
应该是temp =(u8)  (temp2);这句话在编译器当中出现的问题。这不是什么bug,应该是设置的问题。
zhanglli 发表于 2014-10-31 10:16 | 显示全部楼层
看看相应生成的汇编啦,一般跟编译器的关系大点。
 楼主| wangzsa 发表于 2014-10-31 10:18 | 显示全部楼层

表示汇编语言拙计呀,不太懂,一开始就是学c的,能不能说说要设置什么吗?
 楼主| wangzsa 发表于 2014-10-31 10:18 | 显示全部楼层
zhanglli 发表于 2014-10-31 10:16
看看相应生成的汇编啦,一般跟编译器的关系大点。


不太理解汇编语言,等下我贴出来汇编的代码,帮我看看行不?
 楼主| wangzsa 发表于 2014-10-31 10:19 | 显示全部楼层

01.function.c:798                                temp =  (u8)(angle_abmt_ignit);

02.0xa8a2 <.ParameterTrans+96> 0x96            LDW   X,SP                LDW   X,SP

03.0xa8a3 <.ParameterTrans+97> 0x1C000E        ADDW  X,#0x000e           ADDW  X,#0x000e

04.0xa8a6 <.arameterTrans+100> 0xCDDED4        CALL  0xded4              CALL  c_ltor

05.0xa8a9 <.arameterTrans+103> 0xCDDBD0        CALL  0xdbd0              CALL  c_ftol

06.0xa8ac <.arameterTrans+106> 0xB603          LD    A,0x03              LD    A,0x03

07.0xa8ae <.arameterTrans+108> 0x6B0D          LD    (0x0d,SP),A         LD    (0x0d,SP),A
这个是该语句的汇编代码,帮我看看呗。。。表示不懂
lium 发表于 2014-10-31 10:19 | 显示全部楼层
CALL  c_ltor
应该是调用了float的函数库
guoyt 发表于 2014-10-31 10:21 | 显示全部楼层
你到设置里面看,有一个float选项,将其选中,然后看下,是否可以。
 楼主| wangzsa 发表于 2014-10-31 10:21 | 显示全部楼层

没找到float选项呀,我编译环境用的是stvd+cosmic
hanwe 发表于 2014-10-31 10:22 | 显示全部楼层
恩,你到project-settings里面找linker,然后确认下,里面有一个float选项,你选中,试试。
 楼主| wangzsa 发表于 2014-10-31 10:23 | 显示全部楼层
好,我试试,谢谢了啊
zh113214 发表于 2014-11-5 20:48 | 显示全部楼层
表示看不懂呀
xlsbz 发表于 2014-11-6 15:01 | 显示全部楼层
langgq 发表于 2014-10-31 10:04
是编译器的原因,还是单片机本身内核bug??

这两个原因肯定不是。相比而言 你代码问题可能性大
xlsbz 发表于 2014-11-6 15:02 | 显示全部楼层
float没用过啊  不清楚
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

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