AudioRecord and FFT/MSE comparison. Call AudioRecord_demo for control record and AudioSample for subsequent recordings.
Dependencies: CMSIS_DSP_401 STM32L4xx_HAL_Driver
Fork of OneHopeOnePrayer by
Main.c
- Committer:
- EricLew
- Date:
- 2015-12-05
- Revision:
- 5:f6afbd3fc47a
- Parent:
- 4:652cb54276d0
File content as of revision 5:f6afbd3fc47a:
#include "main.h" uint32_t fftSize = 2048; uint32_t ifftFlag = 0; uint32_t doBitReverse = 0; extern float32_t PWRCONTROLMSE; //CONTROL POWER MSE extern float32_t PHSCONTROLMSE; //CONTROL PHASE MSE extern float32_t CONTROLPWR0[512]; //CONTROL RECRODING 0 MAGNITUDE extern float32_t CONTROLPHASE0[512];//CONTROL RECORDING 0 PHASE extern float32_t DISPLAYFFT[512]; extern void AudioRecord_demo(void); extern void AudioSample(void); int main(void) { HAL_Init(); SystemClock_Config(); //RECORDS AND COMPARES CONTROL SAMPLES AudioRecord_demo(); //RECORDS AND COMPARES 1 SAMPLE TO CONTROL SAMPLE AudioSample(); AudioSample(); while(1) {} } void SystemClock_Config(void) { /* oscillator and clocks configs */ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_OscInitTypeDef RCC_OscInitStruct = {0}; /* The voltage scaling allows optimizing the power consumption when the device is clocked below the maximum system frequency, to update the voltage scaling value regarding system frequency refer to product datasheet. */ /* Enable Power Control clock */ __HAL_RCC_PWR_CLK_ENABLE(); HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); /* Disable Power Control clock */ __HAL_RCC_PWR_CLK_DISABLE(); /* 80 Mhz from MSI 8Mhz */ /* MSI is enabled after System reset, activate PLL with MSI as source */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.MSIState = RCC_MSI_ON; RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_7; RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_MSI; RCC_OscInitStruct.PLL.PLLM = 1; RCC_OscInitStruct.PLL.PLLN = 20; RCC_OscInitStruct.PLL.PLLR = 2; RCC_OscInitStruct.PLL.PLLP = 7; RCC_OscInitStruct.PLL.PLLQ = 4; HAL_RCC_OscConfig(&RCC_OscInitStruct); /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */ RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2); RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4); /* The voltage scaling allows optimizing the power consumption when the device is clocked below the maximum system frequency, to update the voltage scaling value regarding system frequency refer to product datasheet. */ /* Enable Power Control clock */ __HAL_RCC_PWR_CLK_ENABLE(); HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); /* Disable Power Control clock */ __HAL_RCC_PWR_CLK_DISABLE(); }