You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32CubeIDE中ARM-M4内核MCU通过USART发送浮点数失败求助

STM32CubeIDE下USART发送浮点数异常问题

仅在STM32CubeIDE中出现该问题,Keil-MDK环境下可正常运行。

使用STM32F411 MCU的USART端口发送消息,编写了支持可变参数的write函数,该函数能正常发送整数和字符,但发送浮点数时存在异常:调用Debug.write("XG : %f\n",R)时,串口终端仅输出"XG : ",无浮点数内容。

已尝试以下方法但均无效:

  • 使用sprintf将浮点数转换为字符串,输出结果始终为"XG : 0",即使指定%.4f格式也无法显示正确数值
  • 使用std::string拼接字符串,MCU直接进入未知状态并停止运行
  • 已调整STM32CubeIDE中的FPU设置,问题依旧存在

相关代码

字节发送函数

void Serial::write_byte(int data)
{
    Serial::port->DR = (data & 0xff);
    while (!(Serial::port->SR & (1 << 7))); //等待发送缓冲区为空
}

可变参数发送函数

void Serial::write(char *msg, ...)
{
    char buff[256];
    va_list args;
    va_start(args, msg);
    vsprintf(buff, msg, args);
    for (unsigned int i = 0; i < strlen(buff); i++)
    {
        Serial::write_byte(buff[i]);
    }
}

浮点数发送调用代码

float R = (int16_t(raw[0] << 8 | raw[1]))/4096.0;
Debug.write("XG : %f\n",R);

内容的提问来源于stack exchange,提问作者Sajil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:30:47