Forum: Mikrocontroller und Digitale Elektronik stm32 Timtertakt auslesen, anzeigen lassen


von stm (Gast)


Lesenswert?

Hi, ich möchte gern einen Timer des STM32 konfigurieren und würde gern 
wissen wie man den Timer Takt in erfahrung bringen kann bzw. ob es eine 
brauchbare Übersicht dafür gibt.
Ich denke dabei an einen Befehl der wie "SystemCoreClock" zum Auslesen 
des Systemclocks.
Hintergrund ist einfach der, dass bei einer Änderung eines der 
Clock-Multiplikatoren nicht die Zeitbasis durcheinander gerät. Oder wie 
verhindert man so was alternativ?

von Uwe (Gast)


Lesenswert?

Grundsatz: Zum Messen einer Zeit bzw. einez Taktes braucht man eine 
Referenz Zeit bzw einen Referenztakt. Diese nmuß ich wissen den Rest 
kann man Messen oder berechnen indem man die Konfigurationsregister 
ausließt die z.B. den Multiplikator enthalten.

von stm (Gast)


Lesenswert?

Ja, ich dachte vielleicht kann ich die Referenzzeit des Timers direkt 
abfragen,ohne "Systemzeit  AHB  APB1 * Timemult" zu rechnen. Außerdem 
lasse ich mir die Takte momentan noch vorgeben, da ich mich noch nicht 
ganz durchgefitzt habe welche Befehle für welchen Takt zu verwenden 
sind.

Bzw. kann es sein, dass wir uns falsch verstanden haben, ich möchte 
einfach nur einen Interrupt nach einer gewissen Zeit auslösen und sicher 
stellen, dass der Timer immer diese Zeit beibehält, auch wenn jemand mal 
auf die Idee kommt den Systemclock umzustellen. Sonst müsste er alle 
Timer nachstellen. Deshalb sollen die Timereinstellungen vorher 
berechnet und nicht fest vorgegeben werden.

von Uwe (Gast)


Lesenswert?

Systicks werden deshalb oft mit einem anderen Taktgenerator bzw. vor der 
CPU-Taktgenerierung abgegriffen. z.B. könntest du den Systick timer von 
einem Uhrentakt ableiten. bzw. vileicht gibt es die möglichkeit einen 
Timer direkt vom Quarzoszillator taketen zu lassen. Dann wäre der 
Interupt der generiert wird unabhängig vom CPU takt usw. Nur wenn der 
Quarz getauscht wird oder der Timer umkonfiguriert wird muß eingegriffen 
werden. Man könnte den Systick als Referenz benutzen und die Anderen 
Takte damit Messen.

von Lutz (Gast)


Lesenswert?

stm schrieb:
> ich möchte
> einfach nur einen Interrupt nach einer gewissen Zeit auslösen und sicher
> stellen, dass der Timer immer diese Zeit beibehält, auch wenn jemand mal
> auf die Idee kommt den Systemclock umzustellen.

Jemand? Fehler von anderen zu verhindern, ist wohl schwierig. Selbst 
wenn man eine eigene Funktion zum korrekten Setzen von Timerregistern 
beim Ändern von relevanten Takten dafür schreiben würde (z.B. darin mit 
defines für Timertakte arbeiten etc.): Wer stellt denn sicher, daß 
jemand die auch benutzt und nicht selber direkt in den jeweiligen 
Registern rumfummelt?

von RP6Conrad (Gast)


Lesenswert?

Wen sie die lib von ST benutzen finden sie in die file system_st32f10x.c 
folgende defines :
1
 *!< Uncomment the line corresponding to the desired System clock (SYSCLK)
2
   frequency (after reset the HSI is used as SYSCLK source)
3
   
4
   IMPORTANT NOTE:
5
   ============== 
6
   1. After each device reset the HSI is used as System clock source.
7
8
   2. Please make sure that the selected System clock doesn't exceed your device's
9
      maximum frequency.
10
      
11
   3. If none of the define below is enabled, the HSI is used as System clock
12
    source.
13
14
   4. The System clock configuration functions provided within this file assume that:
15
        - For Low, Medium and High density devices an external 8MHz crystal is
16
          used to drive the System clock.
17
        - For Connectivity line devices an external 25MHz crystal is used to drive
18
          the System clock.
19
     If you are using different crystal you have to adapt those functions accordingly.
20
    */
21
    
22
/* #define SYSCLK_FREQ_HSE    HSE_Value */
23
#define SYSCLK_FREQ_24MHz  24000000 
24
/* #define SYSCLK_FREQ_36MHz  36000000 */
25
/* #define SYSCLK_FREQ_48MHz  48000000 */
26
/* #define SYSCLK_FREQ_56MHz  56000000 */
27
//#define SYSCLK_FREQ_72MHz  72000000
In diesen lib wird dan immer zugegriffen auf die richtige Systemtakt. 
Bei selbst eingreifen in die Register ist das natulich auch Nutzlos...

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.