浮点数如何进行传输

电子 › ARM › KEIL 售价:0鸟蛋 浏览:2017 时间:星期前

1741350525288960.png


//---------------------------------------------------------------------------------

//函数说明:将单精度浮点数据转成4字节数据并存入指定地址
//附加说明:用户无需直接操作此函数
//target:目标单精度数据
//buf:待写入数组
//beg:指定从数组第几个元素开始写入
//函数无返回
void Float2Byte(float *target,unsigned char *buf,unsigned char beg)
{
    unsigned char *point;
    point = (unsigned char*)target;      //得到float的地址
    buf[beg]   = point[0];
    buf[beg+1] = point[1];
    buf[beg+2] = point[2];
    buf[beg+3] = point[3];
}

//---------------------------------------------------------------------------------

//函数说明:将待发送通道的单精度浮点数据写入发送缓冲区
//Data:通道数据
//Channel:选择通道(1-10)
//函数无返回
void DataScope_Get_Channel_Data(float Data,unsigned char Channel)
{
    if ( (Channel > 10) || (Channel == 0) ) return;  //通道个数大于10或等于0,直接跳出,不执行函数
  else
  {

             switch (Channel)
            {
              case 1:  Float2Byte(&Data,DataScope_OutPut_Buffer,1); break;
              case 2:  Float2Byte(&Data,DataScope_OutPut_Buffer,5); break;
              case 3:  Float2Byte(&Data,DataScope_OutPut_Buffer,9); break;
              case 4:  Float2Byte(&Data,DataScope_OutPut_Buffer,13); break;
              case 5:  Float2Byte(&Data,DataScope_OutPut_Buffer,17); break;
              case 6:  Float2Byte(&Data,DataScope_OutPut_Buffer,21); break;
              case 7:  Float2Byte(&Data,DataScope_OutPut_Buffer,25); break;
              case 8:  Float2Byte(&Data,DataScope_OutPut_Buffer,29); break;
              case 9:  Float2Byte(&Data,DataScope_OutPut_Buffer,33); break;
              case 10: Float2Byte(&Data,DataScope_OutPut_Buffer,37); break;
            }
      }     
}


//---------------------------------------------------------------------------------

void DataScope(void)
{    

//用您要显示的数据替换0就行了

           DataScope_Get_Channel_Data( data1, 1 ); 

//        DataScope_Get_Channel_Data( 0 ,2 );  

//        DataScope_Get_Channel_Data( 0, 3 );

//        DataScope_Get_Channel_Data( 0, 4 );

//        DataScope_Get_Channel_Data( 0, 5 );

//        DataScope_Get_Channel_Data( 0, 6 );

//        DataScope_Get_Channel_Data( 0, 7 ); 

//        DataScope_Get_Channel_Data( 0 , 8);

//        DataScope_Get_Channel_Data( 0 , 9);

//        DataScope_Get_Channel_Data( 0 , 10);       
        
        Send_Count = DataScope_Data_Generate(1);
        for( i = 0 ; i < Send_Count; i++)
        {
                while((USART1->SR&0X40)==0);  
                USART1->DR = DataScope_OutPut_Buffer[i];
        }      
}

提问 收藏 举报 0 0
评论(0)
评论
  • 还没有评论,发表第一个评论吧

2 0 17 2 2
提问 回答 资料 博客 粉丝
近期阅读