制作OLED显示,FFT频谱,请老师们帮忙修正

2019-10-16 04:26发布

这几天对快速傅里叶的实现有了写眉目,但是还有些问题,目前能看个大概意思,但是图像很杂乱,也不稳定。
我的思路如下:
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);

}



请指教,谢谢各位!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
zwl3615473
1楼-- · 2019-10-16 09:42
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-10-16 13:07
帮顶。。。。
k-ad
3楼-- · 2019-10-16 14:33
求楼主分享FFT代码
柴进
4楼-- · 2019-10-16 20:24
楼主能分享代码不   看着还不错啊
单模先声
5楼-- · 2019-10-16 23:42
楼主在吗?你的问题解决了吗
zwl3615473
6楼-- · 2019-10-17 01:05
 精彩回答 2  元偷偷看……

一周热门 更多>