Forum: Mikrocontroller und Digitale Elektronik STM32F4 delay


von Martin F. (martin_f70)


Lesenswert?

Hallo!
Ich nutze das STM32F4 Discovery Board und wollte eine delay funktion 
schreiben wie sie in vielen tutorials gemacht wird:
1
void delay(_IO uint32_t time){
2
    while(time--);
3
}

Wie kann ich jettz aber eine bestimmte Sekunden/Millisekunden anzahl 
"einstellen"?

von Jan B. (berge)


Lesenswert?

Hallo,

am besten nutzt du den Systick Timer dazu. Ein gutes Beispiel dafür 
findest du bei den Beispielen von Uwe (#10):
http://mikrocontroller.bplaced.net/wordpress/?page_id=744

Generell gibt es da für fast alles Beispiele. Guck daher am besten dort 
erst in den gut dokumentierten Code rein, dann sparst du dir viele 
Fragen :)

LG Jan

von Martin F. (martin_f70)


Lesenswert?

Danke, allerdings viel mir auf dass ich die stm32f4_xx_rcc.h und .c von 
dem Projekt vom Uwe kopieren musste weil bei mir diese Dateien nicht 
existieren, nur stm32f4xx_hal_rcc, die aber nicht komplett mit der von 
Uwe übereinstimmt, wie kommt das?

von Jan B. (berge)


Lesenswert?

Das dürfte an deiner Entwicklungsumgebung liegen. Welche nimmst du?

von Martin F. (martin_f70)


Lesenswert?


von Arne S. (Gast)


Lesenswert?

Martin Fischer schrieb:

>
1
> void delay(_IO uint32_t time){
2
>     while(time--);
3
> }
4
>

Solche delay-Schleifen sind irgendwie Kokolores.
Wenn Du im ms Bereich bleibst, kannst Du auf den Systick zurückgreifen. 
Im µs Bereich nehme ich den Cyclecounter (der wird mit jedem ALU Takt um 
eins erhöht). Die Doku dazu findest Du bei ARM. Im ST RefManual steht 
dazu nichts. Vorteil des Cyclecounter ist, dass er keine ISR benötigt, 
somit keine Rechenzeit kostet. Der Cyclecounter liegt bei 0xE000EDFC, 
0xE0001000 und das Zählerregister bei 0xE0001004.
Bei Fragen fragen.

von j m 2 c (Gast)


Lesenswert?

Ob mit SyTick oder anderem Zähler, aktives Warten ist Mist.

von Jan B. (berge)


Lesenswert?

Das ist dann eine Frage, welche bzw. ob Bibliotheken von ST verwendet 
werden. Teilweise bringen die Entwicklungsumgebungen eben eigene 
Hardwareabstraktionsschichten mit. In Eclipse wirst du wahrscheinlich 
dein eigenes Repository für die Bibliotheken pflegen müssen oder einfach 
alle reinkopieren. Die ST Libs gibts komplett zum Download, z.B. bei den 
Ressourcen zum STM32F4DISCO. Darauf basiered dürftest du dann arbeiten 
können.

von Martin F. (martin_f70)


Lesenswert?

Jan Berg kannst du mal bitte IRC (https://kiwiirc.com/) #zttre kommen?

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
Noch kein Account? Hier anmelden.