stm32H743编译器关于浮点类型强制转换传参的bug

局部函数,正常传参

当测试函数作为局部函数和main函数写在同一个文件中时,参数可以正常传递。函数参数和形参都为3.14

objectivec 复制代码
float value = 0.0;
void float_test(float _v)
{
    value = _v;
}


int main(void)
{
    float_test(3.14f);
    while(1);
}

keil仿真截图,形参正常

全局函数,异常传参

当测试函数放到另一个文件中,在main函数中进行调用时,会发生异常参数,函数形参转换出错

test.c

objectivec 复制代码
float value = 0.0;
void float_test(float _v)
{
    value = _v;
}

main.c

objectivec 复制代码
int main(void)
{
    float_test(3.14f);
    while(1);
}

keil仿真截图,形参出错,变为了一个极小值,可能是数据对齐有问题

原因分析

可能是编译器在保存单精度浮点参数时还是按double类型,读取参数时确按float类型来进行读取,所以出现了错误

解决方案

浮点数传参不要使用float类型,采用默认的double类型进行传参,就可以正常传参了

相关推荐
我要成为嵌入式大佬4 分钟前
正点原子MP157问题详解--烧录出错在ssb1(ox6)
单片机·嵌入式硬件
139的世界真奇妙9 分钟前
生产问题排查记录
golang·bug·学习方法
oioihoii22 分钟前
我的第一次移动端 AI 办公:在地铁上把 Bug 修了
人工智能·bug
Coder_Shenshen27 分钟前
【基于LibUA库的OPC UA服务器与客户端Demo——协议解析与Bug修复实践】
网络·c#·bug
都在酒里43 分钟前
STM32 ADC采样详解(标准库版):普通模式与DMA模式,附完整可用代码
stm32·单片机·嵌入式硬件
XTIOT6661 小时前
工业数据采集设备选型 —— 实体键盘 PDA 的技术优势与场景适配(基于 XT8001D 实践)摘要
大数据·嵌入式硬件·物联网·计算机外设
你疯了抱抱我1 小时前
【自用】Kicad 导入嘉立创元器件封装(NLBN插件)
嵌入式硬件·嵌入式·pcb·电路·电子
三佛科技-134163842121 小时前
LED化妆镜方案开发, LED化妆镜MCU主控芯片如何选择?(FT60F011、FT60F021、FT61FC4F、FT62FC33、FT32F103)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
周周记笔记1 小时前
【问题答疑】三极管的饱和道导通压降在工程上一般是多少?
嵌入式硬件·硬件工程
踏着七彩祥云的小丑1 小时前
嵌入式测试学习第 14 天:数字电路基础:高低电平、0和1、逻辑电平
单片机·嵌入式硬件