问题遇到的现象和发生背景
大致就是想要通过stm32将ad芯片转换的电容数值先存入一个叫cap【】的数组中(比如电容值为84.96,处理过后转为字符8 4 9 6 存入cap【6】中)正点原子的上位机接受的是显示如下图,我想让他在上位机上显示84.96,这是为什么呢?恳求各位巨佬解惑
问题相关代码,请勿粘贴截图
float cap_val = 0.0f;
unsigned char cap[6] = {'1','5','.','5','6',' '};
unsigned int capsw,capgw,capzs,capxs1,capxs2;
int main(void)
{
cap_reszult0 = 0x1b3011; //这里直接给测量值赋值了,测量部分和一些不影响的代码就没有贴上来无关就没贴上来
cap_temp = 0x1fffff;
cap_val = (double)cap_reszult0/(double)cap_temp;//0.8496 为C0/C1的比值
cap_val = cap_val*100;//84.96 cap_val 为待测电容的容值?100为基准电容容值
capzs = (unsigned int)cap_val;
capsw = capzs/10;
capgw = capzs%10;
cap_val = cap_val - capzs;
cap_val = cap_val*100;
capzs = (unsigned int)cap_val;
capxs1 = capzs/10;
capxs2 = capzs%10;
cap[0] = capsw + '0';
cap[1] = capgw + '0';
cap[3] = capxs1 + '0';
cap[4] = capxs2 + '0';
UART1_Send_Array(cap,6);
}
void UART1_Send_Array(unsigned char send_array[],unsigned char num) //两个参数 一是数组(的数据) 二是数组长度1-255
{
//串口发送
unsigned char i=0; //定义一个局部变量 用来 发送字符串 ++运算
while(i!=num)
{
USART_SendData(USART1,send_array[i]);//经过库函数 发送数据
while( USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);
i++; //值 加一
}
运行结果及报错内容
我的解答思路和尝试过的方法
本人究极小白,描述肯定很不贴切,贴的东西可能不够精准,需要补充的话可以后续贴上去,恳请各位巨佬能够指导一下该怎么做呢?