100 uint32_t tmpregisterGCR;
102#if defined(STM32F446xx)
110 tmpregisterGCR = SAI_GCR_SYNCOUT_0;
113 tmpregisterGCR = SAI_GCR_SYNCOUT_1;
122 tmpregisterGCR |= SAI_GCR_SYNCIN_0;
127 SAI1->GCR = tmpregisterGCR;
131 SAI2->GCR = tmpregisterGCR;
134#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
135 defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F413xx) || defined(STM32F423xx)
143 tmpregisterGCR = SAI_GCR_SYNCOUT_0;
146 tmpregisterGCR = SAI_GCR_SYNCOUT_1;
152 SAI1->GCR = tmpregisterGCR;
164 uint32_t saiclocksource = 0U;
166#if defined(STM32F446xx)
176#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
177 defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F413xx) || defined(STM32F423xx)
178 uint32_t vcoinput = 0U, tmpreg = 0U;
190 __HAL_RCC_SAI_BLOCKBCLKSOURCE_CONFIG((uint32_t)(hsai->
Init.
ClockSource << 2U));
197 vcoinput = (
HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM));
202 vcoinput = ((
HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)));
204#if defined(STM32F413xx) || defined(STM32F423xx)
212 tmpreg = (RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 28U;
213 saiclocksource = (vcoinput * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6U)) / (tmpreg);
216 tmpreg = (((RCC->DCKCFGR & RCC_DCKCFGR_PLLDIVR) >> 8U) + 1U);
218 saiclocksource = saiclocksource / (tmpreg);
227 tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> 28U;
228 saiclocksource = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U)) / (tmpreg);
231 tmpreg = ((RCC->DCKCFGR & RCC_DCKCFGR_PLLI2SDIVR) + 1U);
232 saiclocksource = saiclocksource / (tmpreg);
259 tmpreg = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24U;
260 saiclocksource = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6U)) / (tmpreg);
263 tmpreg = (((RCC->DCKCFGR & RCC_DCKCFGR_PLLSAIDIVQ) >> 8U) + 1U);
264 saiclocksource = saiclocksource / (tmpreg);
273 tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24U;
274 saiclocksource = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6U)) / (tmpreg);
277 tmpreg = ((RCC->DCKCFGR & RCC_DCKCFGR_PLLI2SDIVQ) + 1U);
278 saiclocksource = saiclocksource / (tmpreg);
283 __HAL_RCC_I2S_CONFIG(RCC_I2SCLKSOURCE_EXT);
290 return saiclocksource;