Forum: Mikrocontroller und Digitale Elektronik stm32 - USART


von peter m. (bastler788)


Lesenswert?

Hallo,

ich möchte über USART3 und RS485 Chip Daten senden. mein Code sieht wie 
folgt aus:

int main(void)
{

  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

  /* Configure USART2 Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);



  USART_InitStructure.USART_BaudRate = 9600;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;
  USART_InitStructure.USART_HardwareFlowControl = 
USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Tx;
  USART_Init(USART3, &USART_InitStructure);
  USART_Cmd(USART3, ENABLE);




  USART3_SENDEN;
  while (1)
  {


  USART_SendData(USART3, 'A');
/* Wait until transmit finishes */
  while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);

  }
}




Leider funktioniert gar nix, kann mir jemand helfen?
ich verwende stm32F100rb und Keil uVision 4

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

auf die schnelle gesichtet
1
RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
2
       ^                      ^
soll wohl heißen
1
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

mfg

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Es fehlt die RCC Konfiguration.Was hast du für ein start-up-file?

Grüsse

von peter m. (bastler788)


Lesenswert?

danke Lötlackl, das wars =)
komisch das der compiler nicht rumgemuckt hat

von Com (Gast)


Lesenswert?

frag mal in der while-schleife das USART_FLAG_TC ab (Transmission 
Complete)
1
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)

von Lötlackl *. (pappnase) Benutzerseite


Lesenswert?

peter müller schrieb:
> komisch das der compiler nicht rumgemuckt hat

Warum sollte er? Für den ist alles in Ordnung.
Man könnte das assert_param macro aus der ST-Lib verwenden, der haut 
einem dann auf die Finger.

mfg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.