Hallo, meine Delay-Routine ist zu schnell. Bei einer Eingabe von 10 Sekunden mit delay_us(10000000) ist schon nach 5 Sekunden schluss.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Aufruf erfolgt mit:
1 | |
2 | |
3 | |
STM32F107RC mit 72Mhz. Kann vielleicht jemand helfen?
|
Anzeige
|
STM32: Delay-Routine zu schnellHallo, meine Delay-Routine ist zu schnell. Bei einer Eingabe von 10 Sekunden mit delay_us(10000000) ist schon nach 5 Sekunden schluss.
Aufruf erfolgt mit:
STM32F107RC mit 72Mhz. Kann vielleicht jemand helfen? Auch wenn der Prozessor ein 32-Bitter ist, hat der Systick dennoch nur 24 Bits. Das reicht für ca. 16 Mio Takte. Nicht für 720 Mio. So, noch ein Versuch:
Wenn ich das ganze in der main.c so aufrufe:
bekomme ich eine Zeitspanne von 8 Sekunden zwischen start_delay und end_delay. Die 200000*25 passen in 24 bit noch hinein. Der Systick hat 2 alternative Taktquellen, siehe CLKSOURCE. Eine davon ist HCLK und die voreingestellte definiert der Integrator, bei den STM32 ist das HCLK/8. Passt doch genau. Ok, das passt dann ja, wenn man den LOAD Value noch einmal durch 8 teilt. Ich habe im Reference-Manual, bei Keil und im Datenblatt geschaut, aber die von Dir gegebene Info nicht gefunden. Hast Du einen Tipp, welche Doku hier hilfreich sein könnte? Besten Dank, Pete Pete K. schrieb: > Hast Du einen Tipp, welche Doku hier hilfreich sein könnte? Die STM32 Reference: "The RCC feeds the Cortex System Timer (SysTick) external clock with the AHB clock (HCLK) divided by 8." Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|