STM32/HAL Frage zu DMA Interrupt

OP #6680707
Hallo, ich habe mal eine Frage. Bin totaler Anfänger beim Thema STM32 
und C.

Ich habe einen UART Empfangsbuffer und das ganze läuft über DMA. Ich 
schalte jetzt eine LED an, wenn der Buffer halb voll ist und wieder aus, 
wenn der voll ist.
1
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
2
{
3
  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, 1);
4
}
5

6
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
7
{
8
  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, 0);
9
}

Angenommen ich habe nun mehrere UART/DMA im Einsatz. Sagen wir UART1 und 
UART2. Wie unterscheide ich denn dann?


Holger
So:
1
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
2
 {
3
   if (huart == my_huart)
4
     {
5
       HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, 1);
6
     }
7
 }
8
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
9
 {
10
   if (huart == my_huart)
11
     {
12
       HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, 0);
13
     }
14
 }
OP
Ahhh verstehe, danke. Nun noch eine Frage. Wie kann ich denn, warum auch 
immer, das entsprechende Flag abfragen? Ich habe schon gesehen, dass man 
z.B. dass man das idle-Flag abfragen kann. Aber da muss ja was für den 
entsprechenden DMA-Kanal auch vorhanden sein. Oder?


Gruß
Holger
Gast
stm32yyxx_hal_uart.h
und
stm32yyxx_hal_uart.c
beantworten nach Lesen des "STM32yy HAL and low-layer drivers" user 
Manuals sehr zuverlässig deine Fragen. (yy ist dein verwendeter STM32 
Typ)

>idle hat aber nun nichts mit DMA zu tun oder?
erst einen neuen UART (DMA) Transfer anstoßen wenn der Uart wieder idle 
ist !

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.