问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32通过串口发送数据到VOFA+上位机

创作时间:
作者:
@小白创作中心

STM32通过串口发送数据到VOFA+上位机

引用
CSDN
1.
https://blog.csdn.net/CR7_GOAT_/article/details/137686741

本文详细介绍了如何通过STM32微控制器使用串口将数据发送到VOFA+上位机的具体步骤。内容包括添加必要的源文件、定义共同体变量类型、编写函数将浮点数拆分为字节、以及发送数据到上位机的完整过程。

步骤总览

  1. 在项目中添加Vofa.c和Vofa.h两个文件
  2. 在Vofa.c中定义一个共同体
  3. 在 Vofa.c文件中新建一个函数,将float类型的变量拆分成4个字节
  4. 在 Vofa.c文件中新建一个函数,用于发送数据到VOFA+上位机
  5. VOFA+上位机选择JustFloat模式
  6. VOFA+上位机成功接收到数据

具体实现步骤

  1. 在项目中添加Vofa.c和Vofa.h两个文件

  2. 在Vofa.c中定义一个共同体

/*定义共同体变量类型*/
typedef union
{
    float Fdata;         //以浮点数形式读取变量
    uint32_t Adata;      //以32位无符号形式读取变量
}Vofa_Type;
  1. 在 Vofa.c文件中新建一个函数,将float类型的变量拆分成4个字节
/**
  * 函数功能:将浮点数拆分成4个字节
  * 入口参数:Fdata:需要操作的浮点数
  * 入口参数:ArrayByte:数组地址
  * 返 回 值:无
  */
void Float_to_Byte(float Fdata,  uint8_t *ArrayByte)
{
    Vofa_Type Vofa;                   //定义Vofa_Type类型的Vofa变量
    Vofa.Fdata = Fdata;               //把需要操作的浮点数复制到共同体的Fdata变量中
    ArrayByte[0] = Vofa.Adata;        //0-7位移到数组元素0
    ArrayByte[1] = Vofa.Adata >> 8;   //8-15位移动到数组元素1
    ArrayByte[2] = Vofa.Adata >> 16;  //16-23位移动到数组元素2
    ArrayByte[3] = Vofa.Adata >> 24;  //24-31位移动到数组元素3 
}
  1. 在 Vofa.c文件中新建一个函数,用于发送数据到VOFA+上位机
/**
  * 函数功能:串口发送数据到VOFA+上位机
  * 入口参数:无
  * 返 回 值:无
  */
void JustFloat(void)
{
    float a = 50;                                  //定义浮点数a变量
    float b = 60;                                  //定义浮点数b变量
    uint8_t Byte[4];                               //定义保存浮点数转换后的数组变量
    uint8_t Tail[4] = {0x00, 0x00, 0x80, 0x7f};    //定义包尾数组
    
    Float_to_Byte(a , Byte);                       //转换第一个浮点数
    Serial_SendArray(Byte, 4);                     //发送第一组数据
    Float_to_Byte(b, Byte);                        //转换第二个浮点数
    Serial_SendArray(Byte, 4);                     //发送第二组数据
    Serial_SendArray(Tail, 4);                     //发送包尾 
}
  1. VOFA+上位机选择JustFloat模式

  2. VOFA+上位机成功接收到数据

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号