使用STM32串口向VOFA上位机发送数据
一、步骤总览:
①在项目中添加Vofa.c和Vofa.h两个文件;
②在Vofa.c中定义一个共同体;
③在 Vofa.c文件中新建一个函数,将float类型的变量拆分成4个字节;
④在 Vofa.c文件中新建一个函数,用于发送数据到VOFA+上位机;
⑤VOFA+上位机选择JustFloat模式;
⑥VOFA+上位机成功接收到数据。
二、具体实现步骤:
①在项目中添加Vofa.c和Vofa.h两个文件。
②在Vofa.c中定义一个共同体。
/*定义共同体变量类型*/
typedef union
{
float Fdata; //以浮点数形式读取变量
uint32_t Adata; //以32位无符号形式读取变量
}Vofa_Type;
③在 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
}
④在 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); //发送包尾
}
⑤VOFA+上位机选择JustFloat模式。
⑥VOFA+上位机成功接收到数据
作者:GOAT_CR7