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.
工具/软件:Code Composer Studio
您好!
我将库"C28x 浮点单元 fastRTS 库"连接到了我的项目。 但是、除法和平方根运算的实现所需的周期比库文档中所述的多。 该库表示除法运算在24个周期内执行、平方根在28个周期内执行。 在我的项目中、这些运算需要29个时钟周期(除法)和33个时钟周期(平方根)。
告诉我问题可能是什么?
以下是我的代码。 红线、我检查的执行时间。 此外、以防万一、我将存档与我的项目附加在一起。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "main.h"
#include
uint16_t ADC_DATA_0[5]={0、0、0、0};
float ADC_DATA_0_Mean = 0;
float ADC_DATA_0_REAL = 0;
float ADC_DATA_0_reall = 0;
int i = 0;
浮点 x1 = 0.5f;
float x2 = 0.9f;
浮点 x3 = 0.0f;
float x4 = 5.2f;
void adcA1ISR (void);
void main (void)
{
InitStartMCU();
InitPWM();
InitADC();
InitADCSOC();
EALLOW;
PieVectTable.ADCA1_INT =&adcA1ISR;// ADCA 中断1的函数
EDIS;
IER |= M_INT1;//启用组1中断
EINT;//启用全局中断 INTM
ERTM;//启用全局实时中断 DBGM
//启用 PIE 中断
//
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
/ /
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;// GPIO2 = GPIO2
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1;//禁用 GPIO2上的上拉
GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;//加载输出锁存器
EDIS;
/ /
while (1)
{
}
}
_interrupt void adcA1ISR (void)
{
如果(i>=4){
I = 0;
}
否则{
i++;
}
ADC_DATA_0[i]= AdcaResultRegs.ADCRESULT0;
ADC_DATA_0_Mean =(ADC_DATA_0[0]+ ADC_DATA_0[1]+ ADC_DATA_0[2]+ ADC_DATA_0[3]+ ADC_DATA_0[4])/5;
ADC_DATA_0_REALL = ADC_DATA_0_Mean * 3.3;
ADC_DATA_0_REAL = ADC_DATA_0_REALL / 4096;
GpioDataRegs.GPASET.bit.GPIO2 = 1;
X3 = x2/x1;
X3 = sqrt (x1);
GpioDataRegs.GPACLEAR.bit.GPIO2 = 1;
X3 = x2 * x4 + x1;
//
//清除中断标志并发出 ACK
//
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
}
尊敬的安德烈:
使用 FPU FastRTS 的除法和平方根的实际计算分别需要24个周期和28个周期。 但是、由于这些例程不是内在函数、而是涉及对库的这些汇编例程的函数调用。 这就是正常函数调用情况下5个周期的开销的原因。
此致
Himanshu