@@ -594,151 +594,154 @@ bool uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
594
594
*/
595
595
void uart_deinit (serial_t * obj )
596
596
{
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 ) {
599
601
#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 ;
605
607
#endif
606
608
#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 ;
612
614
#endif
613
615
#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 ;
619
621
#endif
620
622
#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 ;
626
628
#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 ;
632
634
#endif
633
635
#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 ;
639
641
#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 ;
645
647
#endif
646
648
#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 ;
652
654
#endif
653
655
#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 ;
659
661
#endif
660
662
#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 ;
666
668
#endif
667
669
#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 ;
673
675
#endif
674
676
#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 ;
680
682
#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 ;
686
688
#endif
687
689
#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 ;
693
695
#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 ;
699
701
#endif
700
702
#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 ;
706
708
#endif
707
709
#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 ;
713
715
#endif
714
716
#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 ;
720
722
#endif
721
723
#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 ;
727
729
#endif
728
730
#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 ;
734
736
#endif
735
- }
737
+ }
736
738
737
- HAL_UART_DeInit (uart_handlers [obj -> index ]);
739
+ HAL_UART_DeInit (uart_handlers [obj -> index ]);
738
740
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
+ }
742
745
}
743
746
}
744
747
0 commit comments