USART mit STM32VLDiscovery

Gast #2627700
Lesenswert?
• ▲
▼
Hallo an alle!

Ich steige gerade weider ins µC Programmieren ein, ich hab das mal vor 
ein paar Jahren in der HTL gemacht, aber da hat sich anscheinend einiges 
verändert...

Nach schon langem Herumprobieren mit ADC&co will ich jetzt die 
Ergebnisse mithilfe einer USART-Schnittstelle auf meinen PC bringen.

die entsprechende Hilfe ist von dieser Seite gekommen:
http://www.micromouseonline.com/2009/12/31/stm32-usart-basics/#axzz1rSw8wahp

nur tut sich auf dem Pin PA9(auf dem eigentlich der USART1 TX geschaltet 
ist) nichts (ich hab ein analoges Oszi druafhängen)

meine einzigen konfigurationen am Code war, dass ich die Konstanten 
durch Zahlen ersetzt habe.

das ganze sieht jetzt so aus:

void init_RS485 (void){

  RCC->APB2ENR |= (1<<2);              // enable clock for GPIOA
  GPIOA->CRH   |= (0x0BUL  << 4);     // Tx (PA9) alt. out push-pull
  GPIOA->CRH   |= (0x04UL  << 8);    // Rx (PA10) in floating
  RCC->APB2ENR |= (1<<14);            // enable clock for USART1
  USART1->BRR  = 64000000L/115200L;     // set baudrate
  USART1->CR1 |= (1<<3);       // TX enable
  USART1->CR1 |= (1<<13);           // USART enable

}

int SendChar (int ch)  {
  while ((USART1->SR & (1<<7)!=(1<<7)));    //das 7. Bit ist TXE
  USART1->DR = (ch & 0xFF);
  return (ch);
}

Wenn ich jetzt in einer Endlosschleife ein Zeichen senden lasse tut sich 
auf PA9 absolut GAR NICHTS. Hab auch schon gesucht ob jemand anderes 
dieses Problem hat, finde aber (fast) nur Beiträge, bei denen falsche 
Daten ankommen.

Danke für eure Hilfe,
Dominik
Moderator (Firma: Titel) Persönliche Seite #2628804
Lesenswert?
• ▲
▼
Dominik schrieb:
> while ((USART1->SR & (1<<7)!=(1<<7)));
Du kannst diese Abfrage ganz problemlos so abkürzen:
while (USART1->SR & (1<<7));

> finde aber (fast) nur Beiträge, bei denen falsche Daten ankommen.
Das wäre ja schon mal was. Probier also einfach mal, irgendwas 
auszugeben...
BTW: Warum das Rad immer neu erfinden? Ich habe letzten Freitag einfach 
den Beispielcode von ST genommen und nach knapp einer halben Stunde 
Zeichen versendet und empfangen.
Und wenn du danach genau wissen willst, welche Bits da verbogen werden, 
dann siehst du dir den Code einfach mal an...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.