Guten Tag,
zurzeit versuche ich den Timer 1 eines STM32F103C8T6 (auf so einem
Mini-Development-Board) per DMA zu füttern. Die (glaube ich) wichtigsten
Quelldateien sind anbei.
Im main rufe ich eine Cube-Methode auf:
1 | HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_2, testData, 2);
|
In der Funktion rutscht der in den Hardfault-Handler. Wenn ich den
Debugger im Einzelschritt-Modus laufen lasse, sehe ich, dass folgende
Zeile den Hardfault auslöst:
1 | htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
|
Eigentlich nur eine Zuweisung eines Funktionszeigers in eine DMA-Handle.
Danach springt der in den Hardfault.
Das Hardfault Status Register steht an der Stelle auf 0x40000000, was -
soweit ich weiß - ein Indikator für einen Forced Hardfault ist.
MemMenage Fault Address Register und BusFault Address Register stehen
beide auf 0xe000edf8. Wenn ich mir die die Disassembly an der Stelle
anschaue, steht da:
. Das sieht für mich - ohne Assemblerkentnisse - sehr nach nichts tun
aus.
Könnte mich jemand, der bereits mehr Erfahrung mit solchen Themen und
Fehlern hat, bei der gezielten Fehlersuche und dem Debugging
unterstützen? Ist solch ein Fehler schon irgendwie bekannt? Im
Errata-Sheet habe ich auf die Schnelle nichts gefunden.
Grüße
Peter
PS: Weiß nicht, ob ich es schon geschrieben habe: Das ist so ein
chinesisches Mini-Board mit dem STM32F103C8T6. Sind eventuell Fakes von
den Chips bekannt, der irgendwelche Hardware-Bugs hat?