Forum: Mikrocontroller und Digitale Elektronik Callback Function in HAL STM32 aktivieren?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

Es gibt ja diese Callback functions für den IRQ, welche als weak 
definiert sind und man eigentlich in die main übertragen kann. Ich 
möchte also, dass bei einem Uart_Rx_interrupt folgende routine 
aufgerufen wird:
1
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
2
3
  }

Doch bei mir passiert dies nie, obwohl bei einem Interrupt der 
USART1_IRQHandler() aufgerufen wird. Wie genau muss ich das noch weiter 
initialisieren, so dass meine Callback aktiviert ist?

von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe gerade gesehen, dass er mir nicht folgende if Anweisung 
erfüllt:


stm32f3xx_hal_uart.c:
1
if(huart->RxState == HAL_UART_STATE_BUSY_RX){..}

von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Noch zum UART_Interrupt, diesen aktiviere ich mit:
1
__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);

Erfüllt dies nicht die HAL_UART_STATE_BUSY_RX Bedingung?

von STM Apprentice (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bert S. schrieb:
> die HAL_UART_STATE_BUSY_RX Bedingung

...würde ich so interpretieren dass der UART gerade ein Byte
sendet oder empfängt. Was soll das mit "Rx not empty" zu tun
haben?

von nico_2010 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,
Do you use this function in your program:
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,
uint8_t *pData, uint16_t Size);
Do you activate NVIC interrupt for UART?
If no, then your program never reach the callback routine.
Best regards

von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
nico_2010 schrieb:
> Hi,
> Do you use this function in your program:
> HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,
> uint8_t *pData, uint16_t Size);
> Do you activate NVIC interrupt for UART?
> If no, then your program never reach the callback routine.
> Best regards

Hey, thank you nico_2010, that was indeed the problem. I just used 
__HAL_UART_ENABLE_IT(usart_handler,UART_IT_RXNE);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.