stm32 DMA sprintf数据输出问题

2019-07-21 03:58发布

//按格式输出
void format_data_transmit(float *xx, float *yy, float *zz, u16 *raw_data, float *filtered_data)
{
       sprintf(SendBuff,"%s","#");
       sprintf((char*)X2data,"%.2f",*xx);
       strcat(SendBuff,X2data);
      strcat(SendBuff,"_");
      sprintf((char*)Y2data,"%.2f",*yy);
      strcat(SendBuff,Y2data);
      strcat(SendBuff,"_");
     sprintf((char*)Z2data,"%.2f",*zz);
      strcat(SendBuff,Z2data);
      strcat(SendBuff,"_");
      sprintf((char*)P2data,"%d",*raw_data);
      strcat(SendBuff,P2data);
      strcat(SendBuff,"_");
      sprintf((char*)BP2data,"%.2f",*filtered_data);
      strcat(SendBuff,BP2data);   

     MYDMA_Config((u32)SendBuff,strlen(SendBuff));
      MYDMA_Enable(); //开始一次DMA传输
}
原始数据滤波后变成了浮点数,而且数据长度不确定,所以把浮点数转成了字符串输出,
 for(k=0;k<170;k++)
{
    format_data_transmit(&FX2data[k], &FY2data[k], &FZ2data[k], &data[k], &FP3data[k]);
}
单步调试时可以正常输出,但运行时输出数据不对,也找不到原因,求高手指教,非常感谢!
实际输出:
 #7.#7#7.#7#7#7#7#8#8#8#8#8#8#8#8#8#8#7#7#7#7#7#7#7.#7#7#7#7#7#7#7#7#7#7#7#7#7.#7#7#7#7#8#8#8#8#8#8#8#8#8#8#8.#8#8#8#8#8#8#8#8#8#8#8#8#8.#8#8#8#8#8#8#8#8#8#8#8#8#8#8.#8#8#8#8#8#8#8#8#7#7#7#7#7#7#7#7.#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7.#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7.#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7.#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7.#7#7#7.98_1.13_246.66_2858_129.88
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。