Hallo,
ich nutze einen STM32F413VGT6 und die USART3. Ich habe einen n Byte großen Buffer, in dem circular die empfangenen Daten kopiert werden sollen.
In der Main Loop schicke ich sekündlich über die USART Daten raus und kann diese mit Putty lesen, das klappt also schonmal.
Ebenfalls zyklische schaue ich, ob NDTR sich verändert hat, also Zeichen angekommen sind. Wenn ich in putty ein Zeichen eintippe sehe ich auch, dass einmal in die If Verzweigung gesprungen wird und NDTR um +1 verringert wird, es ist also etwas passiert. Putty schickt kein CR oder LF mit. Die richtige Kombi aus Channel und Stream scheine ich auch gewählt zu haben, andernfalls sollte ja nichts passieren.
Die DMA Fifo ist beim Start initial deaktiviert.
Es gab mal bei manchen STM32 die Notwendigkeit, irgendwas mit (volatile uint8_t*) zu casten, da habe ich aber auch schon rumprobiert.
Im Buffer sind aber nur '\0' zu sehen. Ein Zeichen klassisch ohne DMA zu lesen mittels folgendem funktioniert:
1 |
|
2 |
|
Hier ein paar Code Ausschnitte:
USART Initialisierung:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
Main loop:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|