Gast
#5796053
Hallo zusammen, (Vorab: das ist mein erstes Projekt mit einem STM32) Meine verwendete Software: - STM32CubeMX - TrueStudio (HAL Libraries) Anhang: Quellcode main.c Ich möchte gerne mit einem STM32 (Nucleo64-F446RE) für eine bestimmte Bitfolge, die ich über UART einlese, entsprechende Pulse über eine LED ausgeben. Dabei soll die Bitfolge in Blöcken aus je 2 Bits zerlegt und für jeden Block ein entsprechendes Signal ausgegeben werden. Die Einheitsperiode sei zum Beispiel 4 Sekunden lang und wird in 4 Slots mit gleicher Dauer geteilt. Slot1 Slot2 Slot3 Slot4 | xxxxx | xxxxx | xxxxx | xxxxx | Die Pulsdauer bei der die LED leuchtet soll beispielsweise 0,2 Sekunden lang sein. Je nachdem wie mein Bitmuster aussieht soll der Puls am Anfang des jeweiligen Slot ausgegeben werden (00 -> Puls Slot 1, 01 -> Puls Slot 2, 10 -> Puls Slot 3, 11 -> Puls Slot 4) Beispiel: Fall 00: |1000|0000|0000|0000| Fall 01: |0000|1000|0000|0000| Fall 10: |0000|0000|1000|0000| Fall 11: |0000|0000|0000|1000| Wenn ich nun die Bitmuster '00' und '10' habe soll folgendes ausgegeben werden: |1000|0000|0000|0000| |0000|0000|1000|0000| Ich hatte mir überlegt die Signale mithilfe von Timern zu generieren aber es klappt nicht. Ich habe die Funktion "void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)" verwendet, um zu prüfen, welcher Timer überläuft, den entsprechenden Timer zu stoppen und den nächsten zu starten. Aber es klappt leider nicht. Meine Fragen sind: - macht es Sinn sowas mithilfe von Timern zu programmieren? - Wie wäre es stattdessen möglich, den entsprechenden Pulse zu generieren? Ich habe mir auch das Dokument "en.DM00135183" STM32F446xx advanced Arm®-based 32-bit MCUs runtergeladen und lese mir die Seiten bezüglich der Timer durch aber irgendwie habe ich leider noch nicht die Erläuchtung, wie ich es zum Laufen bekomme.