前言:
在人耳能聽到的頻率範圍(20-20KHz)中,故我們設置採樣頻率爲44100Hz(根據採樣定理,採樣頻率要大於信號最大頻率的兩倍,才能保證不失真)來採集這0-20KHz的音頻信號。我們把採樣點數設置爲1024個點,那麼在進行1024點FFT時,將得到44100Hz / 1024 = 43Hz的頻率分辨率.
採樣頻率:Fs = 44100Hz
樣本數量:NPT = 1024
這兩個參數是FFT計算時候要用到的
編程整體思路:
1.使用ADC採集音頻信號
2.使用官方提供的FFT函數對採集到的信號進行處理
3.量化顯示
1,音頻節拍檢測流程
##2,音頻AD信號採集 ##
用stm32f103自帶的12位ADC進行數據採集,FFT之後如果要獲取信號頻率、幅度等信息還要知道採樣頻率Fs,因此一般都是用定時器觸發ADC採集,再用DMA進行搬運,定時器時間可以自己設置,採樣頻率也就知道了。具體配置如下(只貼出關鍵部分):
void myfft_init(void)
{
/* Enable ADC1 and GPIOC TIM1 DMA1 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE); //使能DMA1時鐘
RCC_APB2PeriphClock