Die While-Schleife wird allerdings gar nicht mehr erreicht. Bei der
Init-Funktion stoppt die Ausfuehrung einfach...
Bin sowohl mit Eclipse, als auch STM32 generell noch nicht allzu
vertraut, sicher ist es also irgendwas ganz triviales. Kann den Fehler
aber beim besten Willen nicht finden.
So bald
Danke fuer den Tipp. Da er rausgefuehrt ist, dachte ich, man koennte ihn
trotzdem benutzen...
Cube benutze ich, da ich den generierten Code aber unglaublich
unuebersichtlich finde, kopiere ich in der Regel nur die relevanten
Teile. Gerade gesehen, das Cube den UART4 zwar sperrt, wenn man zuerst
die Pinbelegung aendert, kann man ihn aber trotzdem benutzen. Scheint
ein Bug zu sein.
Habe den Code nun auf USART2 an PA2 und PA3 umgestrickt, was leider, da
USART scheinbar ein wenig komplizierter einzurichten ist, immmer noch
nicht funktioniert. Die Initialisierung scheiter immer noch an einer
Assertion (Polarity). Vielleicht mag ja nochmal jemand gucken:
[c]
int main(void) {
HAL_Init();
SystemClock_Config();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_USART2_CLK_ENABLE();
char message[] = "Hello UART!\n";
GPIO_InitTypeDef GPIOinit;
GPIOinit.Pin = GPIO_PIN_2 | GPIO_PIN_3;
GPIOinit.Mode = GPIO_MODE_AF_PP;
GPIOinit.Pull = GPIO_PULLUP;
GPIOinit.Speed = GPIO_SPEED_FAST;
GPIOinit.Alternate = GPIO_AF7_USART2;
HAL_GPIO_Init(GPIOA, &GPIOinit);
USART_HandleTypeDef huart2;
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = USART_WORDLENGTH_8B;
huart2.Init.StopBits = USART_STOPBITS_1;
huart2.Init.Parity = USART_PARITY_NONE;
huart2.Init.Mode = USART_MODE_TX_RX;
HAL_USART_Init(&huart2);
while (1) {
HAL_USART_Transmit(&huart2, (uint8_t *) message, 12, 5000);
delay(20000);
}
}
Benajmin Buxbaum schrieb:> da ich den generierten Code aber unglaublich> unuebersichtlich finde,
So schwer ist das nicht.
Mach dir ein einfaches blinky.
Als IDE nutze ich das AC6 Plugin was auch von CubeMX direkt unterstützt
wird.
Das geht inzwischen so gut das alles andere zu schwierig scheint ;)
Das Plugin gucke ich mir mal in Ruhe an.
Wenn man ein UARTHandleTypeDef uebergibt, laesst es sich schonmal
initialisieren, aber nur wenn HwFlowCtl und OverSampling gesetzt sind.
Text kommt leider immer noch keiner raus :(
Jetzt scheint die Transmit-Funktion ein Timeout zu generieren... So
schwer kann das doch eigentlich gar nicht sein.
Danke schonmal fuer die Hilfe bisher!
Benajmin Buxbaum schrieb:> Das hier ist mein Code um das UART-Peripheral auf einem STM32F4-Disco> zum Laufen zu bekommen:> int main(void)
Da predigt unsereiner den Leuten hier zum x-ten Mal, sich einen
ordentlichen Treiber zu schreiben, anstatt zu allererst in die Tasten zu
hauen und main hinzuschreiben.
Aber es nützt nichts.
Nach wie vor starten die Leute zuerst ihre tolle Eclipse, um damit als
erstes 'main' hieinzutippen. Anschließend sagen sie sich "es wird mir
beim Schreiben schon was einfallen" und tippen lustig drauflos.
Danach ist 'auf die Fresse fallen' angesagt, der Debugger wird bemüht
und man fällt zusammen mit dem Debugger nochmal auf die Fresse.
Anschließend wird hier um Hilfe nachgefragt, aber dennoch kein Rat
angenommen. Aber man meint im Brustton tiefster Überzeugung, alles genau
richtig gemacht zu haben. Vom Lesen des Manuals oder gar vom Verstehen
kann man dabei nichts erkennen. Siehe das hier:
"Cube benutze ich, da ich den generierten Code aber unglaublich
unuebersichtlich finde, kopiere ich in der Regel nur die relevanten
Teile."
und
"Habe den Code nun auf USART2 an PA2 und PA3 umgestrickt, was leider, da
USART scheinbar ein wenig komplizierter einzurichten ist, immmer noch
nicht funktioniert. Die Initialisierung scheiter immer noch an einer
Assertion (Polarity)."
Der eigentliche Treppenwitz (für mich) besteht darin, daß ich hier schon
mehrfach einen ordentlichen (und wirklich funktionablen und
HW-abstahierenden) Treiber für UART's und für USB-VCP gepostet habe,
sowohl für LPC als auch für STM32, aber die Leute sind sowohl zu faul,
ins RefMan zu schauen als auch zu faul, mal die Suchfunktion des Forums
zu bemühen. Ich für meinen Teil erwarte da ein gewisses
Mindest-Eigenbemühen, wir sind ja nicht im Schlaraffenland.
W.S.