Hallo zusammen, ich habe ein Problem mit meinem STM32F407VG.... in der Cube IDE. Aktuell arbeite ich an einem Program, wo ich mehrere Timer verwenden muss. Meine Programme davor hatten immer nur einen Timer. Jetzt habe ich folgendes Problem, ich brauche in meinem Programm Delays die ich mit defines mache. Beispiel: "#define WAIT_200MS". Damit ich jetzt eine delay Zeit von 200 Millisekunden erreiche, nehme ich die Frequenz vom Timer und berechne die Preiodendauer mit: T = 1/f. Wenn der Timer jetzt z.B. mit 10Hz arbeitet, dann habe ich T = 1/10 = 0,1 Sekunden, 0.1 * 2 = 0.2 Sekunden als Delay. Also liefert mir: "#define WAIT_200MS 2" ein Delay von 200 Millisekunden. Da ich jetzt aber mehrere Timer habe, weiß ich nicht mit welcher Frequenz ich meine Delays berechne soll. Ich habe TIM6, TIM2 & TIM4 in verwendung. Wenn ich jetzt meine Delays anhand der Frequenz von TIM2 realisieren möchte, wie mache ich das? Muss ich bei den Einstellungen den global interrupt von Timer 2 aktivieren? Ich wäre euch für eine einfache Erklärung sehr dankbar. STM32 ist für mich noch eine neue Welt. Danke!
Also zunächst einmal reicht für solche schnarchlahmen Delays der Systick-Timer völlig aus, wenn es nicht gerade auf den Bruchteil einer µs ankommt. Dafür braucht man keine weiteren Hardware-Timer. Ansonsten empfehle ich dir das Studium des TimerCookbook: https://www.st.com/resource/en/application_note/an4776-generalpurpose-timer-cookbook-for-stm32-microcontrollers-stmicroelectronics.pdf
Ein Beispiel dazu: http://stefanfrings.de/stm32/stm32f3.html#systick Falls du die HAL verwendest, benutze die Funktion HAL_Delay() https://www.disca.upv.es/aperles/arm_cortex_m3/llibre/st/STM32F439xx_User_Manual/group__hal__exported__functions__group2.html#gae63b34eea12780ca2e1100c2402da18e
helpme91 schrieb: > Da ich jetzt aber mehrere Timer habe, weiß ich nicht mit welcher > Frequenz ich meine Delays berechne soll Wenn du überhaupt mehrere Timer brauchst, dann musst du eben für jeden Timer eine eigene Konstante definieren - wo ist da das logische Problem? Anscheinend ist deine Timerverwendung völlig vermurkst. Wofür brauchst du an 2 verschiedenen Timern das gleiche Delay von 200 ms?? Und was machst du wenn du 100 ms brauchst?? Georg
helpme91 schrieb: > ich brauche in meinem Programm Delays > die ich mit defines mache. Beispiel: "#define WAIT_200MS". Vielleicht wird dir mal klar, daß man mit solcher Geradeaus-Programmiererei irgendwann nicht mehr weiter kommt. Du brauchst keine Delays von 200 ms oder so ähnlich, sondern dein Programm braucht nach 200 ms einen Hinweis, daß es anfangen sollte, irgendetwas bestimmtest zu tun. So herum. Und in der Zwischenzeit kann es sich um anderes Zeugs kümmern. Oder ein virtuelles Bier trinken gehen. Je nachdem, was du mit dem µC eigentlich machen willst. W.S.
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.