Hallo zusammen, ich bin Einsteiger was STM32 und CooCox betrifft und wollte zum Einarbeiten einfach mal über die serielle Schnittstelle (uart) Daten senden. Leider funktioniert gar nichts. Als Grundlage verwende ich die Cube-Library, die aber wie ich finde sehr unübersichtlich ist. Kann mir vielleicht jemand Hinweise geben was man alles konfigurieren muss bzw. einbinden muss?? Vielleicht kann mir jemand ein Beispielprogramm zu Verfügung stellen. Bin für jeden Tipp dankbar. Schöne Grüße,
Ohne Cube geht es ganz einfach: - Im RCC den gewuenschten USART einschalten. - GPIO-Pins auf die alternate Funktionen konfigurieren. - GPIO->MODER setzen - USART TransmitEnable, ReceiveEnable und UE setzen - USART Baudrateregister mit 'SYSCLK' / 'BAUDRATE' initialisieren Ins USART->TDR ein 'U' schreiben. Das doch nun wirklich nicht schwer...
Vielen Dank für die schnelle Antwort. Dieses Tool ist wirklich eine enorme Erleichterung :) Eine Frage habe ich trotzdem noch: Die UART-Schnittstelle will trotzdem noch nicht funktionieren. Welche Files müssen in CoIDE eingebuden werden?? Es kommt zwar keine Fehlermeldung, kann mir aber nicht vorstellen dass die main.c ausreicht. Oder ist der Befehl falsch: HAL_UART_Transmit_IT(&huart1, "TEST", 4); Danke schonmal :)
Schau in den Ordner den das Tool erzeugt. Wenn Du die Standarteinstellung nicht verändert hast sind alle nötigen Dateien dort drin.
Ich habe alle notwendigen Files eingebunden, die LED's die ich ansteuern möchte funktionieren, aber die UART-Schnittstelle leider immer noch nicht. Woran kann das liegen?? Nach dem initialisieren schreibe ich: if(HAL_UART_Init(&huart1) != HAL_OK) { // in case of Initiliazation Error */ while(1) { } } HAL_UART_Transmit_IT(&huart1, "TEST", 4); ist da was falsch dran?? In einem Beispielprogramm funktioniert das so. Gruß,
Schau doch mal nach was dieses "HAL_UART_Init(&huart1)" macht. Es müsste ja alles enthalten sein wie weiter oben bereits erwähnt: - Im RCC den gewuenschten USART einschalten. - GPIO-Pins auf die alternate Funktionen konfigurieren. - GPIO->MODER setzen - USART TransmitEnable, ReceiveEnable und UE setzen - USART Baudrateregister mit 'SYSCLK' / 'BAUDRATE' initialisieren
In welcher Form liegt dein stm32f4 vor? Blank, Nucleo, Discovery? Ist uart1 überhaupt frei? jumper schrieb: > if(HAL_UART_Init(&huart1) != HAL_OK) Und das landet auch nicht in der Endlosschleife? Da Du HAL_UART_Transmit_IT benutzt muss auch der Interrupt eingeschaltet und konfiguriert werden.
Tja, ohne Plan wird das auch mit HAL nuex. Wenn man nicht weiss welche Register gesetzt werden muessen, muss man wohl mal das DB befragen. Soviele sind es ja nicht. Wer HAL-Kram "schoen" findet, der soll ihn benutzen. Der darf dann auch selber suchen...
Juhu es funktioniert :) @ hp-freund: Vielen Dank für deine Hilfe, ich habe vergessen das Hackerl bei den globalen interrupts zu setzen. Auch den anderen vielen Dank für die schnellen hilfreichen Antworten. Schöne Grüße
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.