/** * @brief Audio player DeInit * @param None. * @retval Audio state. */ AUDIO_RECORDER_ErrorTypdef AUDIO_RECORDER_DeInit(void) { if(haudio.in.state == AUDIO_RECORDER_RECORDING) { BSP_AUDIO_IN_Stop(); BSP_AUDIO_IN_DeInit(); f_close(&wav_file); } if(haudio.in.state == AUDIO_RECORDER_PLAYING) { BSP_AUDIO_OUT_Stop(CODEC_PDWN_HW); BSP_AUDIO_OUT_DeInit(); f_close(&wav_file); } haudio.in.state = AUDIO_RECORDER_IDLE; if(AudioEvent != 0) { vQueueDelete(AudioEvent); AudioEvent = 0; } if(AudioThreadId != 0) { osThreadTerminate(AudioThreadId); AudioThreadId = 0; } return AUDIO_RECORDER_ERROR_NONE; }
/** * @brief Audio player DeInit * @param None. * @retval Audio state. */ AUDIO_RECORDER_ErrorTypdef AUDIO_RECORDER_DeInit(void) { RCC_PeriphCLKInitTypeDef PeriphClkInitStruct; if(haudio.in.state == AUDIO_RECORDER_RECORDING) { BSP_AUDIO_IN_Stop(CODEC_PDWN_HW); BSP_AUDIO_IN_DeInit(); f_close(&wav_file); } if(haudio.in.state == AUDIO_RECORDER_PLAYING) { BSP_AUDIO_OUT_Stop(CODEC_PDWN_HW); BSP_AUDIO_OUT_DeInit(); f_close(&wav_file); } haudio.in.state = AUDIO_RECORDER_IDLE; if(AudioEvent != 0) { vQueueDelete(AudioEvent); AudioEvent = 0; } /* Restore SAI PLL clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC; PeriphClkInitStruct.PLLSAI.PLLSAIN = 192; PeriphClkInitStruct.PLLSAI.PLLSAIR = 5; PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4; HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct); if(AudioThreadId != 0) { osThreadTerminate(AudioThreadId); AudioThreadId = 0; } return AUDIO_RECORDER_ERROR_NONE; }