嵌入式技术论坛
直播中

bigbangboom

8年用户 1322经验值
擅长:电源/新能源
私信 关注
[问答]

加入RTThread后,使用浮点型运算直接死机是什么情况?

在定时器中使用这段代码,然后程序就死机了,原本在裸机上运行没有问题,这是什么情况
#define q30  1073741824.0f
float q0=1.0f;
q0 =  q30;
我在main函数中使用这段代码,能正常运行没有问题。
我将定时器的栈使用打印出来,并没有溢出,所以应该怎么做
2.jpg

回帖(3)

熊本熊

2023-4-20 14:37:43
确认一下你的cpuport.c中的USE_FPU是否为1;
确认一下你的工程属性中,C/C++构建,设置部分的Float ABI是否为FP instructions (hard)
开启libc
试试看能否解决?

另外,请问,删除你给出的代码,就能顺利启动和运行吗?
举报

bigbangboom

2023-4-20 14:37:53
1.不清楚有没有定义USE_FPU,在option for target或直接搜索,找不到CC_ARM与TARGET_FPU_VFP是否有定义

#if               /* ARMCC */ (  (defined ( __CC_ARM ) && defined ( __TARGET_FPU_VFP ))    \
                  /* Clang */ || (defined ( __CLANG_ARM ) && defined ( __VFP_FP__ ) && !defined(__SOFTFP__)) \
                  /* IAR */   || (defined ( __ICCARM__ ) && defined ( __ARMVFP__ ))        \
                  /* GNU */   || (defined ( __GNUC__ ) && defined ( __VFP_FP__ ) && !defined(__SOFTFP__)) )
#define USE_FPU   1
#else
#define USE_FPU   0
#endif
2.Float ABI 不知道在哪设置,但应该与此无关
3.libc是MICROLIB吗,已经开启了

在前几天,删去这行代码,可正常运行,加上之后不能正常运行。
我当时以为问题出在这,但改了其他地方后,目前能正常运行了
举报

熊本熊

2023-4-20 14:38:01
噢,原来你是在MDK下面开发的。
既然你改了其他地方就工作正常了,那应该不是float这部分的原因了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分