STM32 USART1 config Problem

Gast #2499563
Lesenswert?

Hallo,

habe ein sehr komisches Problem:
Ich initialisiere die USART1 auf den PortPins A9/10

if (__USART1_USED)                    // USART1 used
{
   RCC->APB2ENR |= RCC_APB2ENR_USART1EN;   // enable clock for USART1

   USART1->SR &= (~USART_FLAG_TXE & ~USART_FLAG_TC & ~USART_FLAG_RXNE);

   USART1->BRR  = __USART_BRR(__PCLK2, __USART1_BAUDRATE);  // Calc BR

   USART1->CR2  = 0;            // set Stop bits
   USART1->CR3  = 0xC0;         // Set DMA Control

   USART1->CR1 |= USART_CR1_TCIE;
   USART1->CR1 |= USART_CR1_RE;
   USART1->CR1 |= USART_CR1_TE;   // RX, TX enable
   USART1->CR1 |= USART_CR1_UE;   // USART enable, Oversampling of 8/16

// USART Port Config PA.9 und PA.10 as USART
   GPIOA->AFR[1] |= 0x00000770;

   if (!__USART1_DMA)       // USART Interrupt used
   {
      USART1->CR3  = __USART1_CR3 & 0xFFFFFF3F; // DMA Bits löschen .6 
.7
   }
   NVIC_EnableIRQ(USART1_IRQn);
} // end USART1 used

Wenn ich das so mache, hängt er sich in der startup_stm32..... hinter 
der Interrupt Tabelle auf und steht.
Nehme ich das TCIE Bit weg (also kein Interrupt Transfer Complete), dann 
läuft die Software durch.

Vorher hatte ich in einem anderen Projekt die USART2 in Betrieb nach dem 
gleichen Schema, das hat 100% funktioniert.

Sieht einer den Bock??

Vielen Dank schon mal für die Hilfe.

Heikon
Gast #2503323
Lesenswert?

Nochmal, um den Thread wieder nach oben zu bekommen ;-)

Ich habe auch alle Interrupt_Handler Namen überprüft und auch so sind 
keine Unstimmigkeiten zu erkennen.

Es ist übrigens bei beiden Tx Interrupts der Fall, im Rx kann ich alle 
Interrupts aktivieren und alles ist gut.
Sobald einer der Tx Interrupts TC oder TxE enabled sind, will er nicht 
mehr.

Controller Fehler????

VG
Heikon
Gast #2503537
Lesenswert?

Ja, da ist alles korrekt.

Ich habe jetzt noch in die eingebundene stm32l1xx_it.c den 
USART1_IRQHandler eingebunden und rufe von dort meine Applikations-ISR 
auf.
Dann hängt er an dieser Stelle, wo der IRQHandler definiert ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren