/** * @brief SAI MSP Init. * @param hsai : pointer to a SAI_HandleTypeDef structure that contains * the configuration information for SAI module. * @retval None */ void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai) { GPIO_InitTypeDef GPIO_Init; /* Enable SAI2 clock */ __HAL_RCC_SAI2_CLK_ENABLE(); /* Configure GPIOs used for SAI2 */ AUDIO_SAIx_MCLK_ENABLE(); AUDIO_SAIx_SCK_ENABLE(); AUDIO_SAIx_FS_ENABLE(); AUDIO_SAIx_SD_ENABLE(); GPIO_Init.Mode = GPIO_MODE_AF_PP; GPIO_Init.Pull = GPIO_NOPULL; GPIO_Init.Speed = GPIO_SPEED_HIGH; GPIO_Init.Alternate = AUDIO_SAIx_FS_AF; GPIO_Init.Pin = AUDIO_SAIx_FS_PIN; HAL_GPIO_Init(AUDIO_SAIx_FS_GPIO_PORT, &GPIO_Init); GPIO_Init.Alternate = AUDIO_SAIx_SCK_AF; GPIO_Init.Pin = AUDIO_SAIx_SCK_PIN; HAL_GPIO_Init(AUDIO_SAIx_SCK_GPIO_PORT, &GPIO_Init); GPIO_Init.Alternate = AUDIO_SAIx_SD_AF; GPIO_Init.Pin = AUDIO_SAIx_SD_PIN; HAL_GPIO_Init(AUDIO_SAIx_SD_GPIO_PORT, &GPIO_Init); GPIO_Init.Alternate = AUDIO_SAIx_MCLK_AF; GPIO_Init.Pin = AUDIO_SAIx_MCLK_PIN; HAL_GPIO_Init(AUDIO_SAIx_MCLK_GPIO_PORT, &GPIO_Init); /* Configure DMA used for SAI2 */ __HAL_RCC_DMA2_CLK_ENABLE(); if(hsai->Instance == AUDIO_SAIx) { hSaiDma.Init.Channel = DMA_CHANNEL_3; hSaiDma.Init.Direction = DMA_MEMORY_TO_PERIPH; hSaiDma.Init.PeriphInc = DMA_PINC_DISABLE; hSaiDma.Init.MemInc = DMA_MINC_ENABLE; hSaiDma.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hSaiDma.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hSaiDma.Init.Mode = DMA_CIRCULAR; hSaiDma.Init.Priority = DMA_PRIORITY_HIGH; hSaiDma.Init.FIFOMode = DMA_FIFOMODE_ENABLE; hSaiDma.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; hSaiDma.Init.MemBurst = DMA_MBURST_SINGLE; hSaiDma.Init.PeriphBurst = DMA_PBURST_SINGLE; /* Select the DMA instance to be used for the transfer : DMA2_Stream6 */ hSaiDma.Instance = DMA2_Stream6; /* Associate the DMA handle */ __HAL_LINKDMA(hsai, hdmatx, hSaiDma); /* Deinitialize the Stream for new transfer */ HAL_DMA_DeInit(&hSaiDma); /* Configure the DMA Stream */ if (HAL_OK != HAL_DMA_Init(&hSaiDma)) { Error_Handler(); } } HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0x01, 0); HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn); }
void enableGPIOPowerUsageAndNoiseReductions(void) { // AHB1 __HAL_RCC_BKPSRAM_CLK_ENABLE(); __HAL_RCC_DTCMRAMEN_CLK_ENABLE(); __HAL_RCC_DMA2_CLK_ENABLE(); __HAL_RCC_USB_OTG_HS_CLK_ENABLE(); __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOG_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOI_CLK_ENABLE(); #ifndef STM32F722xx __HAL_RCC_DMA2D_CLK_ENABLE(); __HAL_RCC_GPIOJ_CLK_ENABLE(); __HAL_RCC_GPIOK_CLK_ENABLE(); #endif //APB1 __HAL_RCC_TIM2_CLK_ENABLE(); __HAL_RCC_TIM3_CLK_ENABLE(); __HAL_RCC_TIM4_CLK_ENABLE(); __HAL_RCC_TIM5_CLK_ENABLE(); __HAL_RCC_TIM6_CLK_ENABLE(); __HAL_RCC_TIM7_CLK_ENABLE(); __HAL_RCC_TIM12_CLK_ENABLE(); __HAL_RCC_TIM13_CLK_ENABLE(); __HAL_RCC_TIM14_CLK_ENABLE(); __HAL_RCC_LPTIM1_CLK_ENABLE(); __HAL_RCC_SPI2_CLK_ENABLE(); __HAL_RCC_SPI3_CLK_ENABLE(); __HAL_RCC_USART2_CLK_ENABLE(); __HAL_RCC_USART3_CLK_ENABLE(); __HAL_RCC_UART4_CLK_ENABLE(); __HAL_RCC_UART5_CLK_ENABLE(); __HAL_RCC_I2C1_CLK_ENABLE(); __HAL_RCC_I2C2_CLK_ENABLE(); __HAL_RCC_I2C3_CLK_ENABLE(); __HAL_RCC_CAN1_CLK_ENABLE(); __HAL_RCC_DAC_CLK_ENABLE(); __HAL_RCC_UART7_CLK_ENABLE(); __HAL_RCC_UART8_CLK_ENABLE(); #ifndef STM32F722xx __HAL_RCC_I2C4_CLK_ENABLE(); __HAL_RCC_CAN2_CLK_ENABLE(); __HAL_RCC_CEC_CLK_ENABLE(); #endif //APB2 __HAL_RCC_TIM1_CLK_ENABLE(); __HAL_RCC_TIM8_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_USART6_CLK_ENABLE(); __HAL_RCC_ADC1_CLK_ENABLE(); __HAL_RCC_ADC2_CLK_ENABLE(); __HAL_RCC_ADC3_CLK_ENABLE(); __HAL_RCC_SDMMC1_CLK_ENABLE(); __HAL_RCC_SPI1_CLK_ENABLE(); __HAL_RCC_SPI4_CLK_ENABLE(); __HAL_RCC_TIM9_CLK_ENABLE(); __HAL_RCC_TIM10_CLK_ENABLE(); __HAL_RCC_TIM11_CLK_ENABLE(); __HAL_RCC_SPI5_CLK_ENABLE(); __HAL_RCC_SAI1_CLK_ENABLE(); __HAL_RCC_SAI2_CLK_ENABLE(); #ifndef STM32F722xx __HAL_RCC_SPI6_CLK_ENABLE(); #endif // // GPIO_InitTypeDef GPIO_InitStructure; // GPIO_StructInit(&GPIO_InitStructure); // GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // default is un-pulled input // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // GPIO_InitStructure.GPIO_Pin &= ~(GPIO_Pin_11 | GPIO_Pin_12); // leave USB D+/D- alone // // GPIO_InitStructure.GPIO_Pin &= ~(GPIO_Pin_13 | GPIO_Pin_14); // leave JTAG pins alone // GPIO_Init(GPIOA, &GPIO_InitStructure); // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // GPIO_Init(GPIOB, &GPIO_InitStructure); // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // GPIO_Init(GPIOC, &GPIO_InitStructure); // GPIO_Init(GPIOD, &GPIO_InitStructure); // GPIO_Init(GPIOE, &GPIO_InitStructure); }