Hallo zusammen, ich habe auf einem STM32 F1 eine Applikation auf der ich (unabhängig voneinader) verschiedene CRC32-Prüfsummen berechnen muss. Der STM32 stellt mir dazu eine CRC calculation unit zur Verfügung. Ich habe nun folgendes Problem: Wie bringe ich es fertig, dass ich eine laufende CRC-Berechnung unterbreche, dazwischen eine andere Berechnung mache und die erste laufende Berechnung wieder fortsetze? Der Lösungsansatz sieht bisher so aus: 1. Den aktuellen Wert vom CRC-Modul in einer Variable zwischenspeichern: uint32_t Zwischenvariable = CRC_GetCRC(); 2. Dem CRC-Modul einen Reset verpassen CRC_ResetDR(); 3. Die andere Zwischenberechnung machen: uint32_t Pruefsumme = CRC_CalcBlockCRC(pBuffer, BufferLength); 4. Dem CRC-Modul einen weiteren Reset verpassen CRC_ResetDR(); 5. Die Zwischenvariable als Startwert in das Datenregister des CRC-Moduls unterbringen. Hier liegt leider das Problem. Bei einem Schreibzugriff wird der übergebene Wert in der Prüfsumme verrechnet. Was ich jedoch brauche ist diesen Wert zu restaurieren (Zwischenvariable). Folgerichtig muss ich die Prüfsumme praktisch irgendwie "rückwärts" verechnen und in das Datenregister schreiben, so dass nach der Berechnung genau der alte Wert im Datenregister auftaucht. Ich habe jedoch gerade keine Idee wie ich das realisieren könnte. Weis jemand Rat? Grüße htpem
Danke, funzt perfekt. Genau was ich gesucht habe.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.