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类型进行传参,就可以正常传参了

相关推荐
我在人间贩卖青春1 小时前
NVIC相关寄存器
单片机·嵌入式硬件·中断·nvic
weiyvyy1 小时前
无人机嵌入式开发实战-自主导航与任务规划
人工智能·嵌入式硬件·机器人·无人机·信息化
香水5只用六神1 小时前
【TIM】基本定时器定时实验(1)
c语言·git·stm32·单片机·嵌入式硬件·github
Zwj-c1 小时前
【测试报告】学评一体化平台测试报告(功能测试、自动化测试、Bug描述)
python·功能测试·selenium·测试用例·bug
电子科技圈1 小时前
BANF与芯科科技携手推出智能轮胎监测解决方案实现“最后的模拟领域”的数字化转型
网络·人工智能·嵌入式硬件·物联网·车载系统·智能硬件·交通物流
我在人间贩卖青春1 小时前
嵌入式mcu开发专业术语汇总
单片机·嵌入式硬件
构建的乐趣2 小时前
visual studio监视的有效方法【bug调试】
bug
G***技2 小时前
移动咖啡机器人上岗!杰和算力板卡成高效服务“隐形引擎”
人工智能·嵌入式硬件·机器人·gpu算力
【 STM32开发 】2 小时前
【STM32 + CubeMX 教程】RTC 实时时钟 之 日历 -- F407篇
stm32·cubemx·rtc·hal·实时时钟·f407
Saniffer_SH2 小时前
【高清视频】介绍一个自动化测试辅助小工具 - 上下电测试适用于电脑冷启动的掉电盒
网络·人工智能·驱动开发·嵌入式硬件·测试工具·计算机外设·压力测试