这几天对快速傅里叶的实现有了写眉目,但是还有些问题,目前能看个大概意思,但是图像很杂乱,也不稳定。
我的思路如下:
FFT点数为256点,由定时器3按40KHZ(TIM3_Int_Init(1,1799);)连续抽样256点以后,给一个抽样结束的Flag并关闭定时器3,而后调用FFT函数进行运算,运算后开启定时器3并调用OLED显示函数来显示128点的数值。
现在存在这些问题:
1.ADC引脚接地的情况下,竟然还有波形,参差不齐的那种,这个是抽样的问题还是需要滤波电路?如图:
2.如果将显示函数用定时器2进行处理的话,在设置定时器2为较定时器3高的优先级的条件下,设置TIM2_Int_Init(699,1799);
TIM3_Int_Init(1,1799);时显示会出现明显卡顿,这是有由于什么造成的?
一下是我的部分代码:
1.在主函数中的死循环用来显示和计算:
while(1)
{
if(Flag==0)//该标识为抽样结束标志
{
FFT_Run();//执行完后开启定时器3
OLED_Refresh(Out_Val,Out_Val2);
LED0=!LED0;
}
2.定时器3的抽样代码:
if(TIM3->SR&0X0001)
{
if(n>=256)
{
n=0;
Flag=0;//该标志为抽样结束
TIM3->CR1=0;//关闭定时器
}
In_Val[n]=Get_ADC(1);
n++;
LED1=!LED1;
}
TIM3->SR&=~(1<<0);
}
请指教,谢谢各位!
一周热门 更多>