STM32: Empfangen von Daten über USART
Arbeite ich auf STM32 Discovery (F10x Familie), und ich bin versucht zu senden und empfangen von Daten über USART1.
int uart_putc(int c, USART_TypeDef* USARTx)
{
assert_param(IS_USART_123_PERIPH(USARTx));
while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
USARTx->DR = (c & 0xff);
return 0;
}
int uart_getc (USART_TypeDef* USARTx)
{
assert_param(IS_USART_123_PERIPH(USARTx));
while (USART_GetFlagStatus(USARTx, USART_FLAG_RXNE) == RESET);
return USARTx->DR & 0xff;
}
uart_putc
arbeitet fein, aber uart_getc gets stucked in der while-Schleife, es scheint, wie die while-Bedingung wird nie wahr werden.
Hat jemand wissen, was ist falsch an diesem code?
- Warum nicht nutzen Sie einfach die STM32 standard peripheral library?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den USART_FLAG_RXNE-Flagge steht für RX-Puffer Nicht Leer ist. Wenn es Daten in den RX-buffer die flag GESETZT ist und nicht ZURÜCKGESETZT.
Das ist, warum Ihr code ist stucked in der while-Schleife.
while(a==FALSE)
wäre eine Endlosschleife....ist da ein=FALSE. Ist das nicht alles, was Sie hier sagen?