用我

http://www.dashashi.com/stm32-e7-9a-84eclipse-e5-bc-80-e5-8f-91-e7-8e-af-e5-a2-83-e9-85-8d-e7-bd-ae-ef-bc-88-e9-87-87-e7-94-a8gcc-e7-bc-96-e8-af-91-e5-99-a8-ef-bc-89.html

和 http://www.dashashi.com/stm32-e4-b8-ad-e9-87-8d-e5-ae-9a-e5-90-91printf-e5-88-b0swo-e5-8f-a3.html

里面的方法配置的STM32模版在printf与sprintf浮点数时有问题,原因在https://answers.launchpad.net/gcc-arm-embedded/+question/245658 里提到了,是由于使用的Startup文件跟Linkscript有问题- -

换用mBed中提供的startup文件跟链接文件就好了,mBed是ARM公司搞的类似Arduino平台,不过芯片都是Cortex-M的,当然也有STM32的。

mBed的链接为https://github.com/mbedmicro/mbed/tree/master/libraries/mbed/targets/cmsis/TARGET_STM/

TARGET_STM32F407VG/TOOLCHAIN_GCC_ARM

可以clone下来,也可以直接把需要的两个文件下载下来。下载下来后直接把内容复制到相应的文件即可。

如果重定向了printf,可能会提示一堆undefined reference,在链接文件里的最后面加上 GROUP(libnosys.a)就OK了,这句话的意思是把libnosys链接进来。