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

相关推荐
深圳市青牛科技实业有限公司 小芋圆5 分钟前
GC1809:高性能音频接收与转换芯片
科技·单片机·嵌入式硬件·音视频·智能家居·新能源
JXNL@2 小时前
STM32---外部32.768K晶振(LSE)无法起振问题
stm32·单片机·嵌入式硬件
꧁坚持很酷꧂3 小时前
FreeRTOS学习02_任务管理
stm32·学习
君鼎4 小时前
stm32_GPIO
stm32·单片机·嵌入式硬件
Flag- L5 小时前
STM32标准库-ADC数模转换器
stm32·单片机·嵌入式硬件
云山工作室5 小时前
基于单片机的宠物屋智能系统设计与实现(论文+源码)
单片机·嵌入式硬件·宠物
学习噢学个屁6 小时前
基于STM32物联网智能鱼缸智能家居系统
c语言·stm32·单片机·嵌入式硬件·物联网·智能家居
一月千帆7 小时前
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
stm32·单片机·嵌入式硬件
千年糊涂9 小时前
STM32使用水位传感器
stm32·单片机·嵌入式硬件
吃货界的硬件攻城狮9 小时前
【BUG】记STM32F030多通道ADC DMA读取乱序问题
stm32·嵌入式硬件·bug