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.

[参考译文] TMS320F28335:如何实现更快的循环?

Guru**** 2535880 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/613087/tms320f28335-how-to-have-faster-loops

器件型号:TMS320F28335

你好

我正在测量代码中一系列计算之间的时间。 运行这段代码大约需要0.0003 s:

StartTimer();

vol1 = voltion*3/4095;
cur1 = current*3/4095;

sum1=W[0]*phi1 (f1_1 (cur1、vol1)、f1_2 (cur1、vol1)、fmod (t1)+w[1])+w[1]phi4 (f1_1、vol1、vol1)、f1_2 (cur1、t1)、t1、t1 (cur1、t1)、t1、t1、t1 (cur1、t1、t1)、t1、t1、t1、t1 (cur1、t1、t1)、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1 (cur1)、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1)、t1 (cur1)、t1、t1 (cur1、t1、t1、t1、t1)

sum2=W[0]*phi1 (f2_1 (cur1、vol1)、f2_2 (cur1、vol1)、fmod (t1、1)+w[1]、f2*1 (cur1、vol1)、t1 (cur1)、t1 (cur1、t1)、t1、t1)、t1 (cur1、t1、t1、t1、t1)、t1 (cur1、t1、t1、t1、t1)、t1、t1、t1、t1、t1、t1 (cur1)、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t

sum3=W[0]*phi1 (f3_1 (cur1、vol1)、f3_2 (cur1、vol1)、fmod (t1、1)+W[1]、phi4 (f3_1、vol1、vol1)、f3_2 (cur1、t1)、t1、t1、t1、t1、t1、t1 (cur1)、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1)、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、t1、



如果((sum1<=sum2)&&(sum1<=sum3)){
GPIO_Setup1();

}
否则、如果((sum2<=sum1)&&(sum2<=sum3)){
GPIO_Setup2();
}
否则{
GPIO_setup3();
}
StopTimer(); 

如图所示,我调用3*21函数,执行乘法,然后选择最小值。 我通过这种方法知道、我不会使用丰富的 C 编程策略。 那么、我的问题是如何调用这些函数并更快地进行这些计算呢?  

最棒的

ATA

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

    ATA、您好!

    通常、您可以在 C 代码中执行一些操作、以便编译器更好地利用 C28x 的架构。  例如、您的(F1_1、F1_2、...) 函数可以内联或作为宏编写、以避免调用开销。  编译器优化器将为您提供很多帮助。  对于 C28x、您实际上应该至少在-o2设置中调用优化器以获得良好的性能。

    如需更多信息、请查看此 Wiki 页面:

    此致、

    Richard