void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) { if(huart->Instance==USART2) { /* USER CODE BEGIN USART2_MspDeInit 0 */ /* USER CODE END USART2_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART2_CLK_DISABLE(); /**USART2 GPIO Configuration PA2 ------> USART2_TX PA3 ------> USART2_RX */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3); /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(USART2_IRQn); /* USER CODE BEGIN USART2_MspDeInit 1 */ /* USER CODE END USART2_MspDeInit 1 */ } else if(huart->Instance==USART6) { /* USER CODE BEGIN USART6_MspDeInit 0 */ /* USER CODE END USART6_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART6_CLK_DISABLE(); /**USART6 GPIO Configuration PC6 ------> USART6_TX PC7 ------> USART6_RX */ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7); /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(USART6_IRQn); /* USER CODE BEGIN USART6_MspDeInit 1 */ /* USER CODE END USART6_MspDeInit 1 */ } }
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) { if(huart->Instance==USART6) { /* USER CODE BEGIN USART6_MspDeInit 0 */ /* USER CODE END USART6_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART6_CLK_DISABLE(); /**USART6 GPIO Configuration PC6 ------> USART6_TX PC7 ------> USART6_RX */ HAL_GPIO_DeInit(GPIOC, UART_TX_TEMP_Pin|UART_RX_TEMP_Pin); } /* USER CODE BEGIN USART6_MspDeInit 1 */ /* USER CODE END USART6_MspDeInit 1 */ }
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) { if(huart->Instance==UART4) { /* USER CODE BEGIN UART4_MspDeInit 0 */ /* USER CODE END UART4_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_UART4_CLK_DISABLE(); /**UART4 GPIO Configuration PA0-WKUP ------> UART4_TX PA1 ------> UART4_RX */ HAL_GPIO_DeInit(GPIOA, COMMS_TX_U4_Pin|COMMS_RX_U4_Pin); /* Peripheral DMA DeInit*/ HAL_DMA_DeInit(huart->hdmatx); /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(UART4_IRQn); /* USER CODE BEGIN UART4_MspDeInit 1 */ /* USER CODE END UART4_MspDeInit 1 */ } else if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspDeInit 0 */ /* USER CODE END USART1_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART1_CLK_DISABLE(); /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ HAL_GPIO_DeInit(GPIOA, EPS_TX_U1_Pin|EPS_RX_U1_Pin); /* Peripheral DMA DeInit*/ HAL_DMA_DeInit(huart->hdmatx); /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspDeInit 1 */ /* USER CODE END USART1_MspDeInit 1 */ } else if(huart->Instance==USART2) { /* USER CODE BEGIN USART2_MspDeInit 0 */ /* USER CODE END USART2_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART2_CLK_DISABLE(); /**USART2 GPIO Configuration PA2 ------> USART2_TX PA3 ------> USART2_RX */ HAL_GPIO_DeInit(GPIOA, SU_TX_U2_Pin|SU_RX_U2_Pin); /* Peripheral DMA DeInit*/ HAL_DMA_DeInit(huart->hdmatx); /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(USART2_IRQn); /* USER CODE BEGIN USART2_MspDeInit 1 */ /* USER CODE END USART2_MspDeInit 1 */ } else if(huart->Instance==USART3) { /* USER CODE BEGIN USART3_MspDeInit 0 */ /* USER CODE END USART3_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART3_CLK_DISABLE(); /**USART3 GPIO Configuration PB10 ------> USART3_TX PB11 ------> USART3_RX */ HAL_GPIO_DeInit(GPIOB, DBG_TX_U3_Pin|DBG_RX_U3_Pin); /* Peripheral DMA DeInit*/ HAL_DMA_DeInit(huart->hdmatx); /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(USART3_IRQn); /* USER CODE BEGIN USART3_MspDeInit 1 */ /* USER CODE END USART3_MspDeInit 1 */ } else if(huart->Instance==USART6) { /* USER CODE BEGIN USART6_MspDeInit 0 */ /* USER CODE END USART6_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART6_CLK_DISABLE(); /**USART6 GPIO Configuration PC6 ------> USART6_TX PC7 ------> USART6_RX */ HAL_GPIO_DeInit(GPIOC, ADCS_TX_U6_Pin|ADCS_RX_U6_Pin); /* Peripheral DMA DeInit*/ HAL_DMA_DeInit(huart->hdmatx); /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(USART6_IRQn); /* USER CODE BEGIN USART6_MspDeInit 1 */ /* USER CODE END USART6_MspDeInit 1 */ } }
void uart_deinit(pyb_uart_obj_t *self) { self->is_enabled = false; // Disable UART self->uartx->CR1 &= ~USART_CR1_UE; // Reset and turn off the UART peripheral if (self->uart_id == 1) { HAL_NVIC_DisableIRQ(USART1_IRQn); __HAL_RCC_USART1_FORCE_RESET(); __HAL_RCC_USART1_RELEASE_RESET(); __HAL_RCC_USART1_CLK_DISABLE(); } else if (self->uart_id == 2) { HAL_NVIC_DisableIRQ(USART2_IRQn); __HAL_RCC_USART2_FORCE_RESET(); __HAL_RCC_USART2_RELEASE_RESET(); __HAL_RCC_USART2_CLK_DISABLE(); #if defined(USART3) } else if (self->uart_id == 3) { #if !defined(STM32F0) HAL_NVIC_DisableIRQ(USART3_IRQn); #endif __HAL_RCC_USART3_FORCE_RESET(); __HAL_RCC_USART3_RELEASE_RESET(); __HAL_RCC_USART3_CLK_DISABLE(); #endif #if defined(UART4) } else if (self->uart_id == 4) { HAL_NVIC_DisableIRQ(UART4_IRQn); __HAL_RCC_UART4_FORCE_RESET(); __HAL_RCC_UART4_RELEASE_RESET(); __HAL_RCC_UART4_CLK_DISABLE(); #endif #if defined(USART4) } else if (self->uart_id == 4) { __HAL_RCC_USART4_FORCE_RESET(); __HAL_RCC_USART4_RELEASE_RESET(); __HAL_RCC_USART4_CLK_DISABLE(); #endif #if defined(UART5) } else if (self->uart_id == 5) { HAL_NVIC_DisableIRQ(UART5_IRQn); __HAL_RCC_UART5_FORCE_RESET(); __HAL_RCC_UART5_RELEASE_RESET(); __HAL_RCC_UART5_CLK_DISABLE(); #endif #if defined(USART5) } else if (self->uart_id == 5) { __HAL_RCC_USART5_FORCE_RESET(); __HAL_RCC_USART5_RELEASE_RESET(); __HAL_RCC_USART5_CLK_DISABLE(); #endif #if defined(UART6) } else if (self->uart_id == 6) { HAL_NVIC_DisableIRQ(USART6_IRQn); __HAL_RCC_USART6_FORCE_RESET(); __HAL_RCC_USART6_RELEASE_RESET(); __HAL_RCC_USART6_CLK_DISABLE(); #endif #if defined(UART7) } else if (self->uart_id == 7) { HAL_NVIC_DisableIRQ(UART7_IRQn); __HAL_RCC_UART7_FORCE_RESET(); __HAL_RCC_UART7_RELEASE_RESET(); __HAL_RCC_UART7_CLK_DISABLE(); #endif #if defined(USART7) } else if (self->uart_id == 7) { __HAL_RCC_USART7_FORCE_RESET(); __HAL_RCC_USART7_RELEASE_RESET(); __HAL_RCC_USART7_CLK_DISABLE(); #endif #if defined(UART8) } else if (self->uart_id == 8) { HAL_NVIC_DisableIRQ(UART8_IRQn); __HAL_RCC_UART8_FORCE_RESET(); __HAL_RCC_UART8_RELEASE_RESET(); __HAL_RCC_UART8_CLK_DISABLE(); #endif #if defined(USART8) } else if (self->uart_id == 8) { __HAL_RCC_USART8_FORCE_RESET(); __HAL_RCC_USART8_RELEASE_RESET(); __HAL_RCC_USART8_CLK_DISABLE(); #endif #if defined(UART9) } else if (self->uart_id == 9) { HAL_NVIC_DisableIRQ(UART9_IRQn); __HAL_RCC_UART9_FORCE_RESET(); __HAL_RCC_UART9_RELEASE_RESET(); __HAL_RCC_UART9_CLK_DISABLE(); #endif #if defined(UART10) } else if (self->uart_id == 10) { HAL_NVIC_DisableIRQ(UART10_IRQn); __HAL_RCC_UART10_FORCE_RESET(); __HAL_RCC_UART10_RELEASE_RESET(); __HAL_RCC_UART10_CLK_DISABLE(); #endif } }
/** * @brief UART MSP De-Initialization * This function frees the hardware resources used in this example: * - Disable the Peripheral's clock * - Revert GPIO and NVIC configuration to their default state * @param huart: UART handle pointer * @retval None */ void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) { switch((uint32_t)huart->Instance) { case (uint32_t)USART1 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART1_FORCE_RESET(); __HAL_RCC_USART1_RELEASE_RESET(); __HAL_RCC_USART1_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9 | GPIO_PIN_10); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART1_IRQn); } break; case (uint32_t)USART2 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART2_FORCE_RESET(); __HAL_RCC_USART2_RELEASE_RESET(); __HAL_RCC_USART2_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5 | GPIO_PIN_6); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART2_IRQn); } break; case (uint32_t)USART3 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART3_FORCE_RESET(); __HAL_RCC_USART3_RELEASE_RESET(); __HAL_RCC_USART3_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOD, GPIO_PIN_9 | GPIO_PIN_10); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART3_8_IRQn); } break; case (uint32_t)USART4 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART4_FORCE_RESET(); __HAL_RCC_USART4_RELEASE_RESET(); __HAL_RCC_USART4_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10 | GPIO_PIN_11); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART3_8_IRQn); } break; case (uint32_t)USART5 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART5_FORCE_RESET(); __HAL_RCC_USART5_RELEASE_RESET(); __HAL_RCC_USART5_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_3 | GPIO_PIN_4); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART3_8_IRQn); } break; case (uint32_t)USART6 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART6_FORCE_RESET(); __HAL_RCC_USART6_RELEASE_RESET(); __HAL_RCC_USART6_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOF, GPIO_PIN_9 | GPIO_PIN_10); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART3_8_IRQn); } break; case (uint32_t)USART7 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART7_FORCE_RESET(); __HAL_RCC_USART7_RELEASE_RESET(); __HAL_RCC_USART7_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOF, GPIO_PIN_2 | GPIO_PIN_3); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART3_8_IRQn); } break; case (uint32_t)USART8 : { /*##-1- Reset peripherals ##################################################*/ __HAL_RCC_USART8_FORCE_RESET(); __HAL_RCC_USART8_RELEASE_RESET(); __HAL_RCC_USART8_CLK_DISABLE(); /*##-2- Disable peripherals and GPIO Clocks #################################*/ /* Configure UART Tx/Rx as alternate function */ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8 | GPIO_PIN_9); /*##-3- Disable the NVIC for UART ##########################################*/ IRQ_Managment(__DISABLE, USART3_8_IRQn); } break; } }