@@ -594,151 +594,154 @@ bool uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
594594 */
595595void uart_deinit (serial_t * obj )
596596{
597- /* Reset UART and disable clock */
598- switch (obj -> index ) {
597+ /* Ensure uart is set to prevent deinitializing uart at index 0 */
598+ if (obj -> uart ) {
599+ /* Reset UART and disable clock */
600+ switch (obj -> index ) {
599601#if defined(USART1_BASE )
600- case UART1_INDEX :
601- __HAL_RCC_USART1_FORCE_RESET ();
602- __HAL_RCC_USART1_RELEASE_RESET ();
603- __HAL_RCC_USART1_CLK_DISABLE ();
604- break ;
602+ case UART1_INDEX :
603+ __HAL_RCC_USART1_FORCE_RESET ();
604+ __HAL_RCC_USART1_RELEASE_RESET ();
605+ __HAL_RCC_USART1_CLK_DISABLE ();
606+ break ;
605607#endif
606608#if defined(USART2_BASE )
607- case UART2_INDEX :
608- __HAL_RCC_USART2_FORCE_RESET ();
609- __HAL_RCC_USART2_RELEASE_RESET ();
610- __HAL_RCC_USART2_CLK_DISABLE ();
611- break ;
609+ case UART2_INDEX :
610+ __HAL_RCC_USART2_FORCE_RESET ();
611+ __HAL_RCC_USART2_RELEASE_RESET ();
612+ __HAL_RCC_USART2_CLK_DISABLE ();
613+ break ;
612614#endif
613615#if defined(USART3_BASE )
614- case UART3_INDEX :
615- __HAL_RCC_USART3_FORCE_RESET ();
616- __HAL_RCC_USART3_RELEASE_RESET ();
617- __HAL_RCC_USART3_CLK_DISABLE ();
618- break ;
616+ case UART3_INDEX :
617+ __HAL_RCC_USART3_FORCE_RESET ();
618+ __HAL_RCC_USART3_RELEASE_RESET ();
619+ __HAL_RCC_USART3_CLK_DISABLE ();
620+ break ;
619621#endif
620622#if defined(UART4_BASE )
621- case UART4_INDEX :
622- __HAL_RCC_UART4_FORCE_RESET ();
623- __HAL_RCC_UART4_RELEASE_RESET ();
624- __HAL_RCC_UART4_CLK_DISABLE ();
625- break ;
623+ case UART4_INDEX :
624+ __HAL_RCC_UART4_FORCE_RESET ();
625+ __HAL_RCC_UART4_RELEASE_RESET ();
626+ __HAL_RCC_UART4_CLK_DISABLE ();
627+ break ;
626628#elif defined(USART4_BASE )
627- case UART4_INDEX :
628- __HAL_RCC_USART4_FORCE_RESET ();
629- __HAL_RCC_USART4_RELEASE_RESET ();
630- __HAL_RCC_USART4_CLK_DISABLE ();
631- break ;
629+ case UART4_INDEX :
630+ __HAL_RCC_USART4_FORCE_RESET ();
631+ __HAL_RCC_USART4_RELEASE_RESET ();
632+ __HAL_RCC_USART4_CLK_DISABLE ();
633+ break ;
632634#endif
633635#if defined(UART5_BASE )
634- case UART5_INDEX :
635- __HAL_RCC_UART5_FORCE_RESET ();
636- __HAL_RCC_UART5_RELEASE_RESET ();
637- __HAL_RCC_UART5_CLK_DISABLE ();
638- break ;
636+ case UART5_INDEX :
637+ __HAL_RCC_UART5_FORCE_RESET ();
638+ __HAL_RCC_UART5_RELEASE_RESET ();
639+ __HAL_RCC_UART5_CLK_DISABLE ();
640+ break ;
639641#elif defined(USART5_BASE )
640- case UART5_INDEX :
641- __HAL_RCC_USART5_FORCE_RESET ();
642- __HAL_RCC_USART5_RELEASE_RESET ();
643- __HAL_RCC_USART5_CLK_DISABLE ();
644- break ;
642+ case UART5_INDEX :
643+ __HAL_RCC_USART5_FORCE_RESET ();
644+ __HAL_RCC_USART5_RELEASE_RESET ();
645+ __HAL_RCC_USART5_CLK_DISABLE ();
646+ break ;
645647#endif
646648#if defined(USART6_BASE )
647- case UART6_INDEX :
648- __HAL_RCC_USART6_FORCE_RESET ();
649- __HAL_RCC_USART6_RELEASE_RESET ();
650- __HAL_RCC_USART6_CLK_DISABLE ();
651- break ;
649+ case UART6_INDEX :
650+ __HAL_RCC_USART6_FORCE_RESET ();
651+ __HAL_RCC_USART6_RELEASE_RESET ();
652+ __HAL_RCC_USART6_CLK_DISABLE ();
653+ break ;
652654#endif
653655#if defined(LPUART1_BASE )
654- case LPUART1_INDEX :
655- __HAL_RCC_LPUART1_FORCE_RESET ();
656- __HAL_RCC_LPUART1_RELEASE_RESET ();
657- __HAL_RCC_LPUART1_CLK_DISABLE ();
658- break ;
656+ case LPUART1_INDEX :
657+ __HAL_RCC_LPUART1_FORCE_RESET ();
658+ __HAL_RCC_LPUART1_RELEASE_RESET ();
659+ __HAL_RCC_LPUART1_CLK_DISABLE ();
660+ break ;
659661#endif
660662#if defined(LPUART2_BASE )
661- case LPUART2_INDEX :
662- __HAL_RCC_LPUART2_FORCE_RESET ();
663- __HAL_RCC_LPUART2_RELEASE_RESET ();
664- __HAL_RCC_LPUART2_CLK_DISABLE ();
665- break ;
663+ case LPUART2_INDEX :
664+ __HAL_RCC_LPUART2_FORCE_RESET ();
665+ __HAL_RCC_LPUART2_RELEASE_RESET ();
666+ __HAL_RCC_LPUART2_CLK_DISABLE ();
667+ break ;
666668#endif
667669#if defined(LPUART3_BASE )
668- case LPUART3_INDEX :
669- __HAL_RCC_LPUART3_FORCE_RESET ();
670- __HAL_RCC_LPUART3_RELEASE_RESET ();
671- __HAL_RCC_LPUART3_CLK_DISABLE ();
672- break ;
670+ case LPUART3_INDEX :
671+ __HAL_RCC_LPUART3_FORCE_RESET ();
672+ __HAL_RCC_LPUART3_RELEASE_RESET ();
673+ __HAL_RCC_LPUART3_CLK_DISABLE ();
674+ break ;
673675#endif
674676#if defined(UART7_BASE )
675- case UART7_INDEX :
676- __HAL_RCC_UART7_FORCE_RESET ();
677- __HAL_RCC_UART7_RELEASE_RESET ();
678- __HAL_RCC_UART7_CLK_DISABLE ();
679- break ;
677+ case UART7_INDEX :
678+ __HAL_RCC_UART7_FORCE_RESET ();
679+ __HAL_RCC_UART7_RELEASE_RESET ();
680+ __HAL_RCC_UART7_CLK_DISABLE ();
681+ break ;
680682#elif defined(USART7_BASE )
681- case UART7_INDEX :
682- __HAL_RCC_USART7_FORCE_RESET ();
683- __HAL_RCC_USART7_RELEASE_RESET ();
684- __HAL_RCC_USART7_CLK_DISABLE ();
685- break ;
683+ case UART7_INDEX :
684+ __HAL_RCC_USART7_FORCE_RESET ();
685+ __HAL_RCC_USART7_RELEASE_RESET ();
686+ __HAL_RCC_USART7_CLK_DISABLE ();
687+ break ;
686688#endif
687689#if defined(UART8_BASE )
688- case UART8_INDEX :
689- __HAL_RCC_UART8_FORCE_RESET ();
690- __HAL_RCC_UART8_RELEASE_RESET ();
691- __HAL_RCC_UART8_CLK_DISABLE ();
692- break ;
690+ case UART8_INDEX :
691+ __HAL_RCC_UART8_FORCE_RESET ();
692+ __HAL_RCC_UART8_RELEASE_RESET ();
693+ __HAL_RCC_UART8_CLK_DISABLE ();
694+ break ;
693695#elif defined(USART8_BASE )
694- case UART8_INDEX :
695- __HAL_RCC_USART8_FORCE_RESET ();
696- __HAL_RCC_USART8_RELEASE_RESET ();
697- __HAL_RCC_USART8_CLK_DISABLE ();
698- break ;
696+ case UART8_INDEX :
697+ __HAL_RCC_USART8_FORCE_RESET ();
698+ __HAL_RCC_USART8_RELEASE_RESET ();
699+ __HAL_RCC_USART8_CLK_DISABLE ();
700+ break ;
699701#endif
700702#if defined(UART9_BASE )
701- case UART9_INDEX :
702- __HAL_RCC_UART9_FORCE_RESET ();
703- __HAL_RCC_UART9_RELEASE_RESET ();
704- __HAL_RCC_UART9_CLK_DISABLE ();
705- break ;
703+ case UART9_INDEX :
704+ __HAL_RCC_UART9_FORCE_RESET ();
705+ __HAL_RCC_UART9_RELEASE_RESET ();
706+ __HAL_RCC_UART9_CLK_DISABLE ();
707+ break ;
706708#endif
707709#if defined(UART10_BASE )
708- case UART10_INDEX :
709- __HAL_RCC_UART10_FORCE_RESET ();
710- __HAL_RCC_UART10_RELEASE_RESET ();
711- __HAL_RCC_UART10_CLK_DISABLE ();
712- break ;
710+ case UART10_INDEX :
711+ __HAL_RCC_UART10_FORCE_RESET ();
712+ __HAL_RCC_UART10_RELEASE_RESET ();
713+ __HAL_RCC_UART10_CLK_DISABLE ();
714+ break ;
713715#endif
714716#if defined(USART10_BASE )
715- case UART10_INDEX :
716- __HAL_RCC_USART10_FORCE_RESET ();
717- __HAL_RCC_USART10_RELEASE_RESET ();
718- __HAL_RCC_USART10_CLK_DISABLE ();
719- break ;
717+ case UART10_INDEX :
718+ __HAL_RCC_USART10_FORCE_RESET ();
719+ __HAL_RCC_USART10_RELEASE_RESET ();
720+ __HAL_RCC_USART10_CLK_DISABLE ();
721+ break ;
720722#endif
721723#if defined(USART11_BASE )
722- case UART11_INDEX :
723- __HAL_RCC_USART11_FORCE_RESET ();
724- __HAL_RCC_USART11_RELEASE_RESET ();
725- __HAL_RCC_USART11_CLK_DISABLE ();
726- break ;
724+ case UART11_INDEX :
725+ __HAL_RCC_USART11_FORCE_RESET ();
726+ __HAL_RCC_USART11_RELEASE_RESET ();
727+ __HAL_RCC_USART11_CLK_DISABLE ();
728+ break ;
727729#endif
728730#if defined(UART12_BASE )
729- case UART12_INDEX :
730- __HAL_RCC_UART12_FORCE_RESET ();
731- __HAL_RCC_UART12_RELEASE_RESET ();
732- __HAL_RCC_UART12_CLK_DISABLE ();
733- break ;
731+ case UART12_INDEX :
732+ __HAL_RCC_UART12_FORCE_RESET ();
733+ __HAL_RCC_UART12_RELEASE_RESET ();
734+ __HAL_RCC_UART12_CLK_DISABLE ();
735+ break ;
734736#endif
735- }
737+ }
736738
737- HAL_UART_DeInit (uart_handlers [obj -> index ]);
739+ HAL_UART_DeInit (uart_handlers [obj -> index ]);
738740
739- /* Release uart debug to ensure init */
740- if (serial_debug .index == obj -> index ) {
741- serial_debug .index = UART_NUM ;
741+ /* Release uart debug to ensure init */
742+ if (serial_debug .index == obj -> index ) {
743+ serial_debug .index = UART_NUM ;
744+ }
742745 }
743746}
744747
0 commit comments