Forum: Mikrocontroller und Digitale Elektronik stm32 cube mx atollic interrupt callback


von joule (Gast)


Lesenswert?

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

von joule (Gast)


Angehängte Dateien:

Lesenswert?

das Bild

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

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.

von joule (Gast)


Lesenswert?

Danke!
Was hat es mit dieser Funktion auf sich?
__weak void serial_LineReceivedCallback(serial_rx_buf_t *line)
{
  UNUSED (line);
}

von joule (Gast)


Lesenswert?

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?

von Harry L. (mysth)


Lesenswert?

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.

von Harry L. (mysth)


Lesenswert?

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

von joule (Gast)


Lesenswert?

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

von Nop (Gast)


Lesenswert?


von joule (Gast)


Lesenswert?

Danke für die Hilfe!

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.