STM32F4 USART

Gast #6082834
Hallo,
Ich versuche grade das Beispiel von UWE B.
https://mikrocontroller.bplaced.net/wordpress/?page_id=223 unter Keil 
zum Laufen zu bekommen aber ich bekomme immer den Fehler
.\Obj\SOM-STM32F429IG.axf: Error: L6200E: Symbol UART_RX multiply 
defined (by stm32_ub_uart.o and main.o).

Es ist alles richtig eingebunden.
was mache ich hier falsch?
1
#include "main.h"
2
#include "stm32_ub_uart.h"
3
 
4
int main(void)
5
{
6
  char buf[RX_BUF_SIZE]; // puffer fuer Datenempfang
7
  UART_RXSTATUS_t check;
8
 
9
  SystemInit(); // Quarz Einstellungen aktivieren
10
 
11
  // Init der UARTs
12
  // Com2 und Com3 mit je 115200 Baud
13
  UB_Uart_Init();
14
 
15
  // Zwei String per UART senden (mit LineFeed+CarriageReturn)
16
  UB_Uart_SendString(COM2,"Hier ist UART2 [PA2,PA3]",LFCR);
17
  UB_Uart_SendString(COM3,"Hier ist UART3 [PD8,PD9]",LFCR);
18
 
19
  while(1)
20
  {
21
    // check ob Daten an UART2 empfangen werden
22
    check=UB_Uart_ReceiveString(COM2,buf);
23
    if(check==RX_READY) {
24
      // wenn Daten empfangen wurden
25
      // als Echo wieder zurücksenden
26
      UB_Uart_SendString(COM2,buf,LFCR);
27
    }
28
  }
29
}
Gast #6082880
Vermutlich fehlen in der Datei stm32_ub_uart.h ein paar Zeilen dieser 
Art:
1
#ifndef irgendwas
2
#define irgendwas
3

4
... Inhalt der Datei
5

6
#endif
Gast #6082905
Wie sieht die main.h aus?

Guck mal nach, ob UART_RX in irgendeiner anderen Quelltext Datei (außer 
in stm32_ub_uart.h und stm32_ub_uart.c) noch vorkommt. Wenn ja, hast du 
einen simplen Namenskonflikt, dann musst du eben den Namen des Puffers 
ändern.
Gast #6083287
andre schrieb:
> .\Obj\SOM-STM32F429IG.axf: Error: L6200E: Symbol UART_RX multiply
> defined (by stm32_ub_uart.o and main.o).

Da du Keil verwendest kannst du "UART_RX multiply" in deinem kompletten 
Projekt nach dieser Buchstabenfolge suchen lassen.
Irgendwo (in einer .h-Datei) wird da ein "extern" fehlen.
Gast #6083449
STK500-Besitzer schrieb:
> andre schrieb:
>> .\Obj\SOM-STM32F429IG.axf: Error: L6200E: Symbol UART_RX multiply
>> defined (by stm32_ub_uart.o and main.o).
>
> Da du Keil verwendest kannst du "UART_RX multiply" in deinem kompletten
> Projekt nach dieser Buchstabenfolge suchen lassen.
> Irgendwo (in einer .h-Datei) wird da ein "extern" fehlen.

das wars
Vielen Dank
Gast #6084419
Stefan F. schrieb:
> Ich würde lieber nach "UART_RX" suchen.

Dass man die Suchbegriffe immer weiter universalisieren kann, sollte 
jedem klar sein. Es ging mir eher um das "extern".
Der Linker hat ja schon die problematische Variable angezeigt.

Hat ja auch funktioniert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.