Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- In stm32_xx_it , I added these lines :
- void USARTx_DMA_RX_IRQHandler(void) {
- HAL_DMA_IRQHandler(UartMsgHandle.hdmarx);
- }
- void USARTx_DMA_TX_IRQHandler(void) {
- HAL_DMA_IRQHandler(UartMsgHandle.hdmatx);
- }
- void USARTx_IRQHandler(void) {
- HAL_UART_IRQHandler(&UartMsgHandle);
- }
- And in another file normally ,i changed the hal msp init and deinit like this :
- void HAL_UART_MspInit(UART_HandleTypeDef *huart) {
- static DMA_HandleTypeDef hdma_tx;
- static DMA_HandleTypeDef hdma_rx;
- GPIO_InitTypeDef GPIO_InitStruct;
- /*##-1- Enable peripherals and GPIO Clocks #################################*/
- /* Enable GPIO clock */
- USARTx_TX_GPIO_CLK_ENABLE()
- ;
- USARTx_RX_GPIO_CLK_ENABLE()
- ;
- /* Enable USART1 clock */
- USARTx_CLK_ENABLE()
- ;
- /* Enable DMA1 clock */
- __HAL_RCC_DMA1_CLK_ENABLE()
- ;
- /*##-2- Configure peripheral GPIO ##########################################*/
- /* UART TX GPIO pin configuration */
- GPIO_InitStruct.Pin = WiFi_USART_PRINT_TX_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
- GPIO_InitStruct.Alternate = PRINTMSG_USARTx_TX_AF;
- HAL_GPIO_Init(WiFi_USART_PRINT_TX_GPIO_PORT, &GPIO_InitStruct);
- /* UART RX GPIO pin configuration */
- GPIO_InitStruct.Pin = WiFi_USART_PRINT_RX_PIN;
- GPIO_InitStruct.Alternate = PRINTMSG_USARTx_RX_AF;
- HAL_GPIO_Init(WiFi_USART_PRINT_RX_GPIO_PORT, &GPIO_InitStruct);
- /*##-3- Configure the DMA streams ##########################################*/
- /* Configure the DMA handler for Transmission process */
- hdma_tx.Instance = DMA1_Stream6;
- hdma_tx.Init.Channel = DMA_CHANNEL_4;
- hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_tx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_tx.Init.Mode = DMA_NORMAL;
- hdma_tx.Init.Priority = DMA_PRIORITY_LOW;
- hdma_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_tx.Init.MemBurst = DMA_MBURST_INC4;
- hdma_tx.Init.PeriphBurst = DMA_PBURST_INC4;
- HAL_DMA_Init(&hdma_tx);
- /* Associate the initialized DMA handle to the UART handle */
- __HAL_LINKDMA(huart, hdmatx, hdma_tx);
- /* Configure the DMA handler for reception process */
- hdma_rx.Instance = DMA1_Stream5;
- hdma_rx.Init.Channel = DMA_CHANNEL_4;
- hdma_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_rx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_rx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_rx.Init.Mode = DMA_NORMAL;
- hdma_rx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
- hdma_rx.Init.MemBurst = DMA_MBURST_INC4;
- hdma_rx.Init.PeriphBurst = DMA_PBURST_INC4;
- HAL_DMA_Init(&hdma_rx);
- /* Associate the initialized DMA handle to the the UART handle */
- __HAL_LINKDMA(huart, hdmarx, hdma_rx);
- /*##-4- Configure the NVIC for DMA #########################################*/
- /* NVIC configuration for DMA transfer complete interrupt (USARTx_TX) */
- HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 0, 1);
- HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
- /* NVIC configuration for DMA transfer complete interrupt (USARTx_RX) */
- HAL_NVIC_SetPriority(DMA2_Stream5_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream5_IRQn);
- /* NVIC configuration for USART TC interrupt */
- HAL_NVIC_SetPriority(USARTx_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(USARTx_IRQn);
- }
- /**
- * @brief UART MSP De-Initialization
- * This function frees the hardware resources used in this example:
- * - Disable the Peripheral's clock
- * - Revert GPIO, DMA and NVIC configuration to their default state
- * @param huart: UART handle pointer
- * @retval None
- */
- void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) {
- //static DMA_HandleTypeDef hdma_tx;
- //static DMA_HandleTypeDef hdma_rx;
- if (huart == &UartWiFiHandle) {
- USARTx_FORCE_RESET();
- USARTx_RELEASE_RESET();
- HAL_GPIO_DeInit(WiFi_USART_TX_GPIO_PORT, WiFi_USART_TX_PIN);
- HAL_GPIO_DeInit(WiFi_USART_RX_GPIO_PORT, WiFi_USART_RX_PIN);
- //HAL_DMA_DeInit(&hdma_tx);
- /* De-Initialize the DMA Stream associate to reception process */
- //HAL_DMA_DeInit(&hdma_rx);
- /*##-4- Disable the NVIC for DMA ###########################################*/
- HAL_NVIC_DisableIRQ(DMA2_Stream6_IRQn);
- HAL_NVIC_DisableIRQ(DMA2_Stream5_IRQn);
- HAL_NVIC_DisableIRQ(USARTx_IRQn);
- /*##-3- Disable the DMA Streams ############################################*/
- /* De-Initialize the DMA Stream associate to transmission process */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement