我的stm32f103固件导致硬故障。 以下是崩溃执行的代码行:
float shuntResistance = p[SHUNT_RESISTANCE];
其中p - 是浮点数的全局数组:
float p[CONFIG_NUM_PARAMS];
调试时有解决方法:
0800177c: ldr r3, [pc, #332] ; (0x80018cc <adcSetConstants+336>)
0800177e: vldr s10, [r3, #48] ; 0x30 ; on that instruction program results in hard fault
这是编译器标志:
-c -fmessage-length=0 -mthumb -mcpu=cortex-m3 -mfloat-abi=softfp -ffunction-sections -fdata-sections -fsingle-precision-constant
链接器标志:
-Wl,--static,--gc-sections,-Map=${ProjName}.map,-T../stm32_flash.ld -fmessage-length=0 -mthumb -mcpu=cortex-m3 -ffunction-sections -fdata-sections -fsingle-precision-constant -Dprintf=iprintf -u _printf_float -lc -lnosys -lc
使用的编译器是launchpad的arm-none-eabi-gcc。 使用的IDE是eclipse。 原因是什么?
答案 0 :(得分:1)
这是编译器标志:
-c -fmessage-length=0 -mthumb -mcpu=cortex-m3 -mfloat-abi=softfp
您的MCU是Cortex M3,没有FPU。您需要使用-mfloat-abi=soft
。 &#34; softfp&#34;选项使用的FPU指令对您不起作用。