GpioDataRegs.GPBSET.bit.GPIOB0 = 1; //高电平
EvaTimer2InterruptCount = 0;
while(EvaTimer2InterruptCount < 10);//0.1m
GpioDataRegs.GPBCLEAR.bit.GPIOB0 = 1;//低电平
fft_init(ipcb1); fft_subroutine(ipcb1);
GpioDataRegs.GPBSET.bit.GPIOB0 = 1; //高电平
EvaTimer2InterruptCount = 0;
while(EvaTimer2InterruptCount < 30);//
GpioDataRegs.GPBCLEAR.bit.GPIOB0 = 1;//低电平
void fft_init(long *ipcb)
{
/*****FFT init*******/
fft.ipcbptr = ipcb;
fft.magptr = mag;
fft.init(&fft);
}
void fft_subroutine(long *ipcb)
{
RFFT32_brev(ipcb,ipcb,N);
fft.calc(&fft);
fft.split(&fft);
fft.mag(&fft);
}
下面是我拿定时器单步运行测的各个时间
RFFT32_brev(ipcb,ipcb,N); 30*10 = 300us这一步就花好多时间啊。。。。
fft.calc(&fft); (178-30)*10=1480us 变成毫秒级了。。。
fft.split(&fft);(232-178)*10 =540us 还能再长点么
fft.mag(&fft); (262-232)*10 = 300us
和网上查的一点都不符合啊
128点 用时(us)
1步倒序(RFFT32_brev) 10.8
2步计算(fft.cal) 39
3步实部虚部分离(fft.split) 13.1
4步计算幅值(fft.mag) 13.8
总用时 76.7
gang wang14:
你好 请问你的fft结果正确的么?,我的FFT结果幅值全为零,我也用的sprc81,128个点54us,但是结果是错误的,我怀疑是cmd配置有问题 ,请问你的fft结果正确的么?
GpioDataRegs.GPBSET.bit.GPIOB0 = 1; //高电平
EvaTimer2InterruptCount = 0;
while(EvaTimer2InterruptCount < 10);//0.1m
GpioDataRegs.GPBCLEAR.bit.GPIOB0 = 1;//低电平
fft_init(ipcb1); fft_subroutine(ipcb1);
GpioDataRegs.GPBSET.bit.GPIOB0 = 1; //高电平
EvaTimer2InterruptCount = 0;
while(EvaTimer2InterruptCount < 30);//
GpioDataRegs.GPBCLEAR.bit.GPIOB0 = 1;//低电平
void fft_init(long *ipcb)
{
/*****FFT init*******/
fft.ipcbptr = ipcb;
fft.magptr = mag;
fft.init(&fft);
}
void fft_subroutine(long *ipcb)
{
RFFT32_brev(ipcb,ipcb,N);
fft.calc(&fft);
fft.split(&fft);
fft.mag(&fft);
}
下面是我拿定时器单步运行测的各个时间
RFFT32_brev(ipcb,ipcb,N); 30*10 = 300us这一步就花好多时间啊。。。。
fft.calc(&fft); (178-30)*10=1480us 变成毫秒级了。。。
fft.split(&fft);(232-178)*10 =540us 还能再长点么
fft.mag(&fft); (262-232)*10 = 300us
和网上查的一点都不符合啊
128点 用时(us)
1步倒序(RFFT32_brev) 10.8
2步计算(fft.cal) 39
3步实部虚部分离(fft.split) 13.1
4步计算幅值(fft.mag) 13.8
总用时 76.7
mangui zhang:
如果在单步下计算时间 一般是不准确的
建议你基于CCS的Clock功能去计算出多少个时钟周期 再根据你的sysclk去推算所用时间
这个是比较靠谱的