STM32F407由浮点数%f打印乱码牵扯出的栈溢出问题解决

1. 涉及的软硬件工具

(1)MCU为STM32F407,自带FPU浮点数运算

(2)keil工程使用正点原子STM32F407探索者工程,包含动态内存分配mymalloc功能

2. 问题说明

之前的工程中,下面操作是可以直接打印浮点数的:

float num = 11.965;
printf("num = %.3f\r\n", num);
//打印:num = 11.965

后面添加一堆功能之后,发现同样的操作,无法正常打印浮点数,打印效果如下:

num = 11\0965  //原本的小数点'.'变成'\0'
num = 11?965   //原本的小数点'.'变成'?'

3. 问题排查与定位

3.1 排查1

由于最直接的现象是printf()函数打印浮点数是有问题的,所以直接开始了解STM32F407打印浮点数失败的原因(实际上该解决问题的思路有问题,因为原本就可以浮点数打印,不过也当做顺便了解其他知识)。

STM32F407有自带的FPU浮点数运算,但不一定能直接使用,可能需要使能啥的,在CSDN上了解到,具体如下:

(1)是否优化等级开太大了。并没有优化

(2)工程是否选择为Single Precision。已选择

(3)__FPU_PRESENT和__FPU_USED宏是否都为1

__FPU_PRESENT确定为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值