Uart - ArduinoIDE mit STM32F103 ("BluePill")
          
        Quellen
        grauonline.de : 
ARDUINO GOES STM32
        Übersicht
        Das Stm32F103Board stellt dem Benutzer unter der ArduinoIDE vier UARTs bereit: 
          •  STM32-UART0: Serial (SerialUSB) 
          •  STM32-UART1: Serial1 
          •  STM32-UART2: Serial2 
          •  STM32-UART3: Serial3 
        
Hardware
        Pin-Layout des STM32F103Boards: 
        
          
          Pin-Belegung STM32F103Board
        
        
        Die UARTs sind standardmässig folgenden Pins zugeordnet: 
        
        
          
            |  UART     | 
             Software     | 
             Pin TxD     | 
             Pin RxD     | 
             Note             | 
          
          
            | UART0 | 
            Serial | 
            USBDM-PA11 | 
            USBDP-PA12 | 
            Serial (USB) | 
          
          
            | UART1 | 
            Serial1 | 
            PA9 | 
            PA10 | 
            Serial1 | 
          
          
            | UART2 | 
            Serial2 | 
            PA2 | 
            PA3 | 
            Serial2 | 
          
          
            | UART3 | 
            Serial | 
            PB10 | 
            PB11 | 
            Serial3 | 
          
        
        
        
        WICHTIG : Der von 
STMicroelectronics vorgesehene und notwendige Standard-USB-Treiber
        kann hier heruntergeladen werden:   
STM32 Virtual COM Port Driver .
        
        
        Lokale Download-Alternative:   
en.stsw-stm32102.zip
        
        Eine typische technische Umsetzung von den LVTTL-IO-Pegeln des MicroControllers 
        zu USB-Signalen findet über einen UART-USB-Converter statt.
        Der USB-Ausgang des UART-USB-Converters wird über ein USB-Daten-Kabel 
        (USB2MiniAB - USB2StandardA) mit dem einem PC verbunden.
       
        Ausgenommen ist dabei der SerialUSB-Port: 
        hier wird zur PC-Verbindung ein USB-Daten-Kabel (USB2MicroAB - USB2StandardA) benötigt:
        
        
          
          Verschaltung von vier UARTs beim STM32F103Board
        
        
        Software
        
        Unter der Software "ArduinoIDE" stellt der Benutzer den korrekten Prozessor STM32F103C ein:
        
        
          
          ArduinoIDE mit ESP32(-UnoBoard)
        
        Im "DeviceManger" unter "Port (COM & LPT)" erkennt der Benutzer alle real 
        verfügbaren seriellen UART-Schnittstellen:
        
        
          
          DeviceManager mit COM-Ports
        
        
        In diesem Beispiel stehen vier UARTs: 
          •  1x ESP32-USB: COM20 
          •  3x UART-USB-Converter: COM30, COM31, COM32 
        für den ESP32 zur Datenübertragung bereit. Die STM32-USB-Schnittstelle unterliegt 
        nach korrekter Treiber-Installation keinerlei Beschränkung für die Programmierung. 
        
        Beispiel "STM32F103 mit UART0, UART1, UART2 und UART3 im Terminalbetrieb" 
 
        zeigt den Protokoll-Mitschnitt des Transmits aller vier UART-Schnittstellen im PC:
        
        
          
          STM32F103 mit UART0, UART1, UART2 und UART3 im Terminalbetrieb
        
               
        Den zugehörigen Quelltext für das STM32F103Board zeigt das Listing:
        
        
               
  //
  #include 
  //
  //----------------------
  //  Define
  //----------------------
  const int PIN_LEDSYSTEM   = PC13;
  const int PERIOD_BLINK    = 333;   // [ms]
  // Uart0 - USB
  const int PIN_UART0_USBDP = PA12;
  const int PIN_UART0_USBFM = PA11;
  // Uart1 - A
  const int PIN_UART1_TXD   = PA9;
  const int PIN_UART1_RXD   = PA10;
  // Uart2 - B
  const int PIN_UART2_TXD   = PA2;
  const int PIN_UART2_RXD   = PA3;
  // Uart3 - C
  const int PIN_UART3_TXD   = PB10;
  const int PIN_UART3_RXD   = PB11;
  //
  #define UartUSB Serial
  #define UartPCA Serial1
  #define UartPCB Serial2
  #define UartPCC Serial3
  //
  //----------------------
  //  Global
  //----------------------
  int CounterDebug = 0;
  //
  //----------------------
  //  Main - Setup
  //----------------------
  void setup(void)
  {
    pinMode(PIN_LEDSYSTEM, OUTPUT);
    //
    UartUSB.begin(115200, SERIAL_8N1);
    UartPCA.begin(115200, SERIAL_8N1);
    UartPCB.begin(115200, SERIAL_8N1);
    UartPCC.begin(115200, SERIAL_8N1);
    delay(333);
    //
    UartUSB.println("\r\n*** Esp32Uart-0-USB ***");
    UartPCA.println("\r\n*** Esp32Uart-1-PCA ***");
    UartPCB.println("\r\n*** Esp32Uart-2-PCB ***");
    UartPCC.println("\r\n*** Esp32Uart-3-PCC ***");
  }
  //
  //----------------------
  //  Main - Loop
  //----------------------
  void loop(void) 
  {
    digitalWrite(PIN_LEDSYSTEM, HIGH);
    delay(PERIOD_BLINK);
    digitalWrite(PIN_LEDSYSTEM, LOW);
    delay(PERIOD_BLINK);
    //
    CounterDebug++;
    UartUSB.print("Esp32Uart-0-USB> ");
    UartUSB.println(CounterDebug);
    //
    UartPCA.print("Esp32Uart-1-PCA> ");
    UartPCA.println(CounterDebug);
    //
    UartPCB.print("Esp32Uart-2-PCB> ");
    UartPCB.println(CounterDebug);  
    //
    UartPCC.print("Esp32Uart-3-PCC> ");
    UartPCC.println(CounterDebug);  
  }
        
 
        
        Download des Listings: 
2206031100_Stm32F103C8T6Uart_01V01.zip 
        
        
        WebSites   
        Module   
        Elektronik   
        Uart