Gast
#2499563
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