背景
最近开发ASW应用软件,系统集成的朋友反馈TC397复位,并且ERROR代码提示未栈错误。
可能是溢出了,但是我自己是没有397完整的工程,于是想用Codewarrior 在S12XS上面运行ASW软件。ASW涉及到了浮点数的运算,于是报错:没有声明相关浮点数运动的函数。于是原来是我初始化工程时没有选择支持浮点数。
细节原因
工程有没浮点数支持的差别就是库文件xxxxxx.lib不同,以及编译器选项中有一些差别,所以可以直接对原工程进行修改来添加浮点数支持。
浮点数支持有两种:
- 一种只支持32位的;
- 另一种float为32位,double为64位。
具体来说:
32位浮点数的支持
如果要将工程改成全32位浮点数的,需要把原先的工程中的ansixbi.lib库文件
改成ansixb.lib
这些库文件的位置都在 “(安装路径)\Freescale\CWS12v5.1\lib\hc12c\lib”。
然后,打开 Edit->Standard Settings->Compiler for HC12 删除 -D__NO_FLOAT__
这样就实现了对32位浮点数的支持。
64位浮点数的支持
如果还要实现对64位浮点数的支持,那就得把库文件改为ansixbf.lib
然后除了删除-D__NO_FLOAT__外,还得在编译器选项中加入-Cf
然后就可以使用浮点数了。
参考
https://blog.csdn.net/lin_strong/article/details/105795003