Guten Abend, ich habe bis jetzt Avr Mikrocontroller programmiert. Nun muss ich da mein Arbeitskollege einen Unfall hat in die Stm32 Welt eintauchen. Die gewählte Entwicklungs Umgebung ist CubeMx und Atollic True Studio. Ich soll einige kleine Änderungen in bestehenden Code machen. Unter anderem brauche ich den Zugang zum Uart send coplete Interrupt. Mein Problem ist das ich das System mit den Callback Funktionen noch nicht verstanden habe. Folgende Fragen habe ich. Reicht es in CubeMx den Globalen Interrupt der Uart frei zu geben (Bild)? Wo bekomme ich den Namen der Interrupt callback her? Wie gebe ich den Interrupt für complete send frei? Bitte erklärt mir wie unter dieser Konfiguration der Entwicklung Umgebung mit den Interrupts richtig umgehe. Danke für die Hilfe
Es gibt das HAL User-Guide für die diversen Plattformen. Bsp.: für STM32F3xx: https://www.st.com/content/ccc/resource/technical/document/user_manual/a6/79/73/ae/6e/1c/44/14/DM00122016.pdf/files/DM00122016.pdf/jcr:content/translations/en.DM00122016.pdf Darin findest du auch alle Callback-Funktionen. Für den UART hab ich dir mal Beispielcode angehängt.
Danke! Was hat es mit dieser Funktion auf sich? __weak void serial_LineReceivedCallback(serial_rx_buf_t *line) { UNUSED (line); }
void serial_init(UART_HandleTypeDef *huart, serial_rx_buf_t *LineBuffer) { hcomport = huart; fifo_init(&tx_fifo, (uint8_t *) &tx_buffer, TX_BUFFER_SIZE); line_complete = FALSE; EditBuffer[0] = 0; buffer_p = 0; TargetBuffer = LineBuffer; HAL_UART_Receive_IT(hcomport, &rxbuf, 1); } Wo wird hier der Interrupt void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) aktiviert?
joule schrieb: > Danke! > Was hat es mit dieser Funktion auf sich? > __weak void serial_LineReceivedCallback(serial_rx_buf_t *line) > { > UNUSED (line); > } Das ist ein Platzhalter, der genutzt wird, wenn du diese Funktion nicht selbst definierst.
joule schrieb: > void serial_init(UART_HandleTypeDef *huart, serial_rx_buf_t > *LineBuffer) > { > hcomport = huart; > fifo_init(&tx_fifo, (uint8_t *) &tx_buffer, TX_BUFFER_SIZE); > line_complete = FALSE; > EditBuffer[0] = 0; > buffer_p = 0; > TargetBuffer = LineBuffer; > HAL_UART_Receive_IT(hcomport, &rxbuf, 1); > } > > Wo wird hier der Interrupt void > HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) > > aktiviert? Im CubeMX Abschnitt NVIC
Harry L. schrieb: > Das ist ein Platzhalter, der genutzt wird, wenn du diese Funktion nicht > selbst definierst. Das habe ich jetzt leider nicht verstanden. Lg
joule schrieb: > Das habe ich jetzt leider nicht verstanden. Guckst Du hier: https://www.mikrocontroller.net/articles/C_Linkerhacks_%2B_Modularisierung http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka14171.html
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.