微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 串口怎么发送浮点数或者双精度数给上位机

串口怎么发送浮点数或者双精度数给上位机

时间:10-02 整理:3721RD 点击:
用的STM32F103单片机,想将采集的数据通过串口发送到电脑上,但是由于数据是小数的所以想发送小数到上位机。各位有没有什么招?

由于浮点是2字节   双精度是4字节,所以发送的时候你可以使用联合体的形式发送。  然后依次发送出四个字节。

  1. union LEFT_SPEED
  2. {
  3.   char    left_speed_char[8];
  4.   double  left_speed;
  5. } left_wheel_speed;

  6. void Wifi_Send_To_Phone( int encoder_left)
  7. {
  8.     u8 i;
  9. //    left_wheel_speed.left_speed=0.006545f* encoder_left;

  10.     left_wheel_speed.left_speed=1.0f;
  11.     uart1_tx.buf[0] = 0xFF;
  12.     uart1_tx.buf[1] = 0xD8;
  13.     for (i=0;i<8;i++)
  14.     {
  15.         uart1_tx.buf[i+2] = left_wheel_speed.left_speed_char[7-i];
  16.     }
  17.     uart1_tx.buf[10] = 0x02;
  18.     uart1_tx.buf[11] = 0xFF;
  19.     uart1_tx.buf[12] = 0xD9;
  20.     USART1_DMA_Send_Once_Data( uart1_tx.buf, 13 );
  21. }

复制代码



类似于这样的形式
注意发送的时候是倒着顺序发送的

注意发送的时候是倒着顺序发送的

先看看 好的话 会采用的  谢谢啦

#include
#include
void send_float(float d)
{
    char buf[32], *temp;
    temp=buf;
    sprintf(temp, "%f", d);
    for (; *temp; ++temp) send_char(*temp);
    send_char(' '); //加一个空格或回车隔开两个数。
}
void send_floats(float *d, int n)  //n为浮点数个数
{
    for (; n; --n) send_float(*d++);   
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top