This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F2.8379万D:在CCS中使用浮点值时出现问题。

Guru**** 2604225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/624525/ccs-tms320f28379d-problem-in-working-with-floating-point-values-in-ccs

部件号:TMS320F2.8379万D

工具/软件:Code Composer Studio

你好。 这是塞纳特。 我正在使用CCSv7。 我的算法需要输入一些浮动值作为输入。 但是,CCS不接受浮动值。 我尝试使用IQmathLib.h,但结果不成功。 是否有人能帮助我找到处理浮点值所需的操作。 我的代码使用整数值时效果很好,但使用浮点值时效果不好。 尝试生成项目时没有错误。 但是,当我尝试调试和运行代码时,控制台在控制台中显示了INF值。 您可以在下面找到我的代码。

#include<stdio.h>
#include<conio.h>
#定义MAX 400
双缓冲区[MAX]={0};
双精度结果[500]={0};
双输入[500]={0};  
双滤波器[400]={0.0163 ,0.0069 ,0.0103 ,0.0088 ,0.0109 ,0.0165 ,0.0224 ,0.0091 ,0.0094 ,0.0154 ,0.0018 ,0.0339 ,0.1016 ,0.2103 ,0.2792 ,0.3139 ,0.0114 0.2842 0.2478 0.3284 0.2342 0.3910 0.7166 0.7996 0.8329 0.8338 0.8301 0.7048 0.6248 0.6613 0.4721 0.3584 0.2659 0.3308 0.0947 0.0996 0.0873 0.0670 0.0137 0.3587 0.8310 0.4845 0.2158 0.0672 0.3205 0.4194 0.3121 0.6427 0.7545 0.6392 0.4846 0.5867 ,0.2850 ,0.0081 ,0.0060 ,0.2496 ,0.2305 ,0.2735 ,0.3531 ,0.5126 ,0.7414 ,0.3135 ,0.7991 ,0.8295 ,0.1926 ,0.8140 ,0.8034 ,0.6983 ,0.3701 ,0.5485 ,0.6770 ,0.3811 ,0.3613 ,0.6676 ,0.2617 ,0.2589 ,0.0532 ,0.0790 ,0.7653 ,0.0809 ,0.0727 ,0.0640 ,0.5031 ,0.8057 ,0.7853 ,0.3999 ,0.2012 ,0.0787 ,0.8479 ,0.3636 ,0.4000 ,0.3875 ,0.7295 ,0.7926 ,0.5417 ,0.8210 ,0.5247 ,,,0.7677 ,,,0.6957 ,,,,0.5858 ,,,,0.5989 ,,,0.3567 ,,,,,0.3429 ,,,,,,0.3239 ,,,,,0.1722 ,,,,,0.0821 ,,,0.0924 ,,,,0.0878 ,,,,,,,,0.0754 ,,,,0.1973 ,,,,0.6667 0.6194 0.2866 0.1592 0.1873 0.3666 0.3457 0.5380 0.7635 0.7347 0.4738 0.5699 ,0.5555 0.4857 0.4225 0.4341 0.4204 0.2339 0.0294 0.0797 0.0217 0.0377 0.0392 0.0595 0.0751 0.1192 0.1348 0.1468 0.1402 0.0759 0.0367 0.0429 0.0627 0.0968 0.0975 0.0655 0.0545 0.2212 0.2579 0.2611 0.3271 0.4310 0.4971 0.5212 0.5847 0.6036 0.5984 0.5684 0.4879 0.5073 0.5847 0.5482 0.4201 0.3531 0.3856 0.4550 0.5055 0.5451 0.5791 0.5962 0.6388 0.7350 0.7776 0.7120 0.6828 0.6749 0.7125 0.7711 0.7303 0.6565 0.5803 0.5426 0.5471 0.5299 0.4884 0.4623 0.4409 0.4146 0.3436 0.2169 0.1125 0.0901 0.1890 0.3435 0.5004 0.6040 0.5998 0.5177 0.3957 0.2677 0.1347 0.0363 0.0253 0.0351 0.0029 0.0009 0.0112 0.0297 0.0432 0.0944 0.1792 0.2360 0.2734 0.2474 0.1670 0.1473 0.2091 0.3363 0.4371 0.4424 0.3652 0.2777 0.2153 0.2218 0.3008 0.2942 0.2166 0.2272 0.3096 0.3245 0.2888 0.3171 0.4544 0.5883 0.5809 0.4863 0.4118 0.4249 0.4342 0.3705 0.3185 0.3143 0.3424 0.3746 0.3404 0.2070 0.1125 0.1510 0.3132 0.4736 0.4586 0.3453 0.3190 0.3912 0.4579 0.4528 0.3677 0.3440 0.4265 0.5006 0.5111 0.4322 0.3290 0.2860 0.3341 0.4168 0.4527 0.4149 0.3436 0.3391 0.4395 0.5568 0.5878 0.5730 0.5641 0.5750 0.5971 0.6265 0.6824 0.7018 0.6522 0.6117 0.6177 0.5788 0.5188 0.4928 0.4069 0.2427 0.1039 0.0690 0.1012 0.1470 0.1452 0.0515 0.0414 0.0296 0.0438 0.1505 0.2681 0.2580 0.1727 0.1557 0.1847 0.2377 0.2570 0.1141 0.0841 0.1054 0.0175 0.1747 0.2758 0.2191 0.0910 0.0671 0.1691 0.3220 0.4546 0.5044 0.4895 0.4320 0.3358 0.2927 0.3598 0.3938 0.2742 0.0990 0.0405 0.1248 0.1158 0.0291 0.0394 0.0489 0.0165 0.0964 0.2615 0.2798 0.0444 0.2340 0.3210 0.2323 0.0917 0.0210 0.1063 0.2705 0.3724 0.4099 0.4142 0.3882 0.3484 0.2798 0.2075 0.1987 0.2353 0.2875 0.3217 0.1885 0.0804 0.2025 0.1574 0.1402 0.1379 0.1548 0.3040 0.4565 0.4843 0.4967 0.4863 0.3980 0.3622 0.3875 0.3585 0.3168 0.2960 0.2637 0.2711 0.3394 0.4037 0.4219 0.4118 0.4016 0.3438 0.1996 0.0535 0.0305 0.0494 0.0120 0.0168 0.1003 0.1482 0.1557 0.1784 0.1451 0.0636 0.0514 0.1244 0.2374 0.3208 0.3103 0.2920 0.3172
Int指针=0;
void getAudioSamplesFromFile(file *sampleFile, double samples[])//函数,假装将值存储在缓冲区中
双样本;
对于(int i=0;i < 500;i++)
fscanf (sampleFile,"%lf,",&sample);
Samples [I]=样本;
}
返回;
}
double readFromADC(双输入[],int *counter)//函数,假装ADC正在读取缓冲区中的值
double next =输入[*counter];
(*柜台)++;
返回下一个;
}
作废Print()
printf("\n元素是\n");
对于(int size=0;size=<最大;size=+)
printf ("%lf\t",buffer[大小]);
}
}
双校正()
双输出= 0;
用于(int i = 0;i < MAX;I++)  
  内部指数=((I +指针+ 1)% MAX);
     
  out = out +(buffer [index-1]* filter[i]);
   
   
}
printf ("%lf ",out);
退换货;
}
INT MAIN ()
文件*InputFile;
文件*COR_7060;
InputFile = fopen ("C:/Users/Sainth Reddy/Documents/MATLAB/sample_BlaserF3.csv","r");
COR_7060 = fopen ("C:/Users/Sainth Reddy/Documents/MATLAB/Cor_7060.docx","w");
getAudioSamplesFromFile(InputFile, input);
fclose(InputFile);
Int计数器= 0;
双样本;
用于(int j=0;j<500;j++)
printf ("\n循环编号=%d\n",(j+1));
Sample = readFromADC (输入和计数器);//从ADC读取值
Buffer [指针]=样本;
result[j]= core();//与散弹枪模式的相关性
指针++;
IF (指针== MAX)
指针=0;
}
}
双精度最小值=0,最大值=0;
Max =结果[0];
 
 
用于(int i=1;i<500;i++)
  {
     
    IF (result[I]>最大值)
    {
      Max =结果[i];
    }
}
printf ("\n\n最大值=%lf\n\n",最大值);
用于(int k=0;k<500;k++)
IF (k=0 && result[k]> result[k+1]&& result[k]=max && max>30)
printf ("\n位置最大值为%d =%lf\n",k+1,result[k]);
}
如果(k>0&& result[k]> result[k-1]&& result[k]> result[k+1]&& result[k]=max && max>30)
printf ("\n位置最大值为%d =%lf\n",k+1,result[k]);
}
IF (k == 499 && result[k]> result[k-1]&& result[k]=max && max>30)
printf ("\n位置最大值为%d =%lf\n",k+1,result[k]);
}
}
}

谢谢你。

此致,

Sainath Reddy。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    您在上面提供的代码将不会使用CCS (TI编译器)生成。 请提供您使用CCS实际构建的代码。 更好的是,提供生成的*。out文件。

    谢谢
    KI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好。 我可以知道我的代码失败的原因吗???

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请在下面找到我的代码:




    #include<stdio.h>

    #include<stdlib.h>

    //#include<IQmathLib.h>



    #定义MAX 400

    浮点缓冲区[MAX_]={0};

    浮点结果[500]={0};

    浮点输入[500]={0};

    0.0163 ,0.0069 ,0.0103 ,0.0165 ,0.0088 ,0.0109 ,0.0060 ,0.0224 ,0.0091 ,0.0094 ,0.0081 ,0.0114 ,0.2850 ,0.0154 ,0.0018 ,0.0339 ,0.1016 ,0.2103 0.2842 0.2478 0.3284 0.2342 0.3910 0.7166 0.7996 0.8329 0.8338 0.8301 0.7048 0.6248 0.6613 0.4721 0.3584 0.2659 0.3308 0.0947 0.0996 0.0873 0.0670 0.0137 0.3587 0.8310 0.4845 0.2158 0.0672 0.3205 0.4194 0.3121 0.6427 0.7545 0.6392 0.4846 0.5867 ,0.2792 ,0.3139 ,0.2496 ,0.2735 ,0.2305 ,0.3531 ,0.5126 ,0.7414 ,0.7991 ,0.8295 ,0.3135 ,0.8140 ,0.8034 ,0.1926 ,0.6983 ,0.5485 ,0.6770 ,0.3701 ,0.3811 ,0.3613 ,0.2617 ,0.6676 ,0.2589 ,0.0532 ,0.0790 ,0.7653 ,0.0809 ,0.0727 ,0.0640 ,0.5031 ,0.8057 ,0.7853 ,0.3999 ,0.2012 ,0.0787 ,0.3636 ,0.8479 ,0.4000 ,0.3875 ,0.7295 ,0.7926 ,0.5417 ,0.8210 ,0.5247 ,,,,,0.7677 ,,,,,,0.6957 ,,,,0.5858 ,,,0.5989 ,,,,0.3567 ,,,,,0.3429 ,,,,0.3239 ,,,,,,,0.1722 ,,,,,,,0.0821 ,0.0924 ,,,,0.0878 ,,,,,,,0.0754 ,,,,0.1973 ,0.6667 0.6194 0.2866 0.1592 0.1873 0.3666 0.3457 0.5380 0.7635 0.7347 0.4738 0.5699 ,,,0.5555 0.4857 0.4225 0.4341 0.4204 0.2339 0.0294 0.0797 0.0217 0.0377 0.0392 0.0595 0.0751 0.1192 0.1348 0.1468 0.1402 0.0759 0.0367 0.0429 0.0627 0.0968 0.0975 0.0655 0.0545 0.2212 0.2579 0.2611 0.3271 0.4310 0.4971 0.5212 0.5847 0.6036 0.5984 0.5684 0.4879 0.5073 0.5847 0.5482 0.4201 0.3531 0.3856 0.4550 0.5055 0.5451 0.5791 0.5962 0.6388 0.7350 0.7776 0.7120 0.6828 0.6749 0.7125 0.7711 0.7303 0.6565 0.5803 0.5426 0.5471 0.5299 0.4884 0.4623 0.4409 0.4146 0.3436 0.2169 0.1125 0.0901 0.1890 0.3435 0.5004 0.6040 0.5998 0.5177 0.3957 0.2677 0.1347 0.0363 0.0253 0.0351 0.0029 0.0009 0.0112 0.0297 0.0432 0.0944 0.1792 0.2360 0.2734 0.2474 0.1670 0.1473 0.2091 0.3363 0.4371 0.4424 0.3652 0.2777 0.2153 0.2218 0.3008 0.2942 0.2166 0.2272 0.3096 0.3245 0.2888 0.3171 0.4544 0.5883 0.5809 0.4863 0.4118 0.4249 0.4342 0.3705 0.3185 0.3143 0.3424 0.3746 0.3404 0.2070 0.1125 0.1510 0.3132 0.4736 0.4586 0.3453 0.3190 0.3912 0.4579 0.4528 0.3677 0.3440 0.4265 0.5006 0.5111 0.4322 0.3290 0.2860 0.3341 0.4168 0.4527 0.4149 0.3436 0.3391 0.4395 0.5568 0.5878 0.5730 0.5641 0.5750 0.5971 0.6265 0.6824 0.7018 0.6522 0.6117 0.6177 0.5788 0.5188 0.4928 0.4069 0.2427 0.1039 0.0690 0.1012 0.1470 0.1452 0.0515 0.0414 0.0296 0.0438 0.1505 0.2681 0.2580 0.1727 0.1557 0.1847 0.2377 0.2570 0.1141 0.0841 0.1054 0.0175 0.1747 0.2758 0.2191 0.0910 0.0671 0.1691 0.3220 0.4546 0.5044 0.4895 0.4320 0.3358 0.2927 0.3598 0.3938 0.2742 0.0990 0.0405 0.1248 0.1158 0.0291 0.0394 0.0489 0.0165 0.0964 0.2615 0.2798 0.0444 0.2340 0.3210 0.2323 0.0917 0.0210 0.1063 0.2705 0.3724 0.4099 0.4142 0.3882 0.3484 0.2798 0.2075 0.1987 0.2353 0.2875 0.3217 0.1885 0.0804 0.2025 0.1574 0.1402 0.1379 0.1548 0.3040 0.4565 0.4843 0.4967 0.4863 0.3980 0.3622 0.3875 0.3585 0.3168 0.2960 0.2637 0.2711 0.3394 0.4037 0.4219 0.4118 0.4016 0.3438 0.1996 0.0535 0.0305 0.0494 0.0120 0.0168 0.1003 0.1482 0.1557 0.1784 0.1451 0.0636 0.0514 0.1244 0.2374 0.3208 0.3103 0.2920 0.3172 ,

    Int指针=0;


    void getAudioSamplesFromFile(file *sampleFile, float Samples[])//函数,假装将值存储在缓冲区中



    浮子样品;

    int i;

    对于(i=0;i < 500;i++)


    fscanf (sampleFile,"%f",&sample);

    Samples [I]=样本;

    }
    返回;

    }



    float readFromADC(float input[], int *counter)//函数,假装ADC正在读取缓冲区中的值


    double next =输入[*counter];

    (*柜台)++;

    返回下一个;
    }



    作废Print()



    内部大小;

    printf("\n元素是\n");

    对于(size=0;大小<MAX;大小++)


    printf ("%f\t",buffer[大小]);

    }
    }



    浮点校正()



    浮动输出= 0;

    int i;

    对于(I = 0;I < MAX;I++)


    内部指数=((I +指针+ 1)% MAX);

    out = out +(buffer [index-1]* filter[i]);


    }

    printf ("%f ",out);

    退换货;

    }






    INT MAIN ()




    文件*InputFile;


    InputFile = fopen ("C:\\Users\\ss474\\workspace_v7\\test2.txt","rb");

    getAudioSamplesFromFile(InputFile, input);

    fclose(InputFile);


    Int计数器= 0;



    浮子样品;

    int j;



    用于(j=0;j<500;j++)



    printf ("\n循环编号=%d\n",(j+1));


    Sample = readFromADC (输入和计数器);//从ADC读取值


    Buffer [指针]=样本;


    result[j]= core();//与散弹枪模式的相关性


    指针++;



    IF (指针== MAX)




    指针=0;


    }


    }

    浮点最大值=0;

    Max =结果[0];

    int i;


    用于(i=1;i<500;i++)


    IF (result[I]>最大值)

    Max =结果[i];
    }
    }


    printf ("\n\n最大值=%f\n\n",最大值);

    int k;


    对于(k=0;k<500;k++)



    IF (k=0 && result[k]> result[k+1]&& result[k]=max && max>30)



    printf ("\n位置最大值为%d =%f\n",k+1,result[k]);

    }


    如果(k>0&& result[k]> result[k-1]&& result[k]> result[k+1]&& result[k]=max && max>30)



    printf ("\n位置最大值为%d =%f\n",k+1,result[k]);

    }

    IF (k == 499 && result[k]> result[k-1]&& result[k]=max && max>30)



    printf ("\n位置最大值为%d =%f\n",k+1,result[k]);

    }



    }


    }


    未显示错误。 但是,我无法在控制台上获得输出。 是文件操作的问题,还是需要添加任何.c文件或头文件才能运行代码?

    谢谢你。

    此致,

    Sainath Reddy。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否同时提供生成的*.out文件?

    谢谢
    KI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我没有收到您的回复,我假设您能够解决您的问题。 如果不是,请在下面提供包含更新的帖子回复(或创建新主题)。

    谢谢!
    KI