Forum: Mikrocontroller und Digitale Elektronik STM32 Interrupt alle 15sec.


von Volker I. (vilex)


Lesenswert?

Hallo,

wie kann ich bei einem STM32 einen Timer Interrupt erzeugen der alle 
15sec auftaucht?

Ich hab
1
void TIM3_IRQHandler()
2
{
3
  if (TIM3->SR & TIM_SR_UIF) {
4
    TOGGLEPIN(P_LED);
5
  }
6
  TIM3->SR = 0;
7
}
8
9
void timer_init()
10
{
11
  RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
12
  TIM3->ARR  = 562;
13
  TIM3->DIER = TIM_DIER_UIE;
14
  TIM3->CR1  = TIM_CR1_CEN;
15
  NVIC_EnableIRQ(TIM3_IRQn);
16
}
aber wie stell ich das auf 15sec ein ?

von Detlef K. (adenin)


Lesenswert?

gähn
So früh funktioniert meine Glaskugel noch nicht.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Hier ein Demo wie man ein Interrupt aktiviert:
http://www.mikrocontroller.net/articles/STM32_f%C3%BCr_Einsteiger#Interruptcontroller_vom_Cortex-M3.2FM4

Man wird wohl auch den Prescaler nutzen müssen.

Bei längeren Zeiten kann auch der RTC mit Weckalarm genutzt werden

: Bearbeitet durch User
von Detlef K. (adenin)


Lesenswert?

Und natürlich geht auch meherere Timer zu kaskadieren.

von Svenska (Gast)


Lesenswert?

Es geht auch, wenn der Timer jede Sekunde feuert und du nur jeden 15. 
Aufruf was tust.

Wenn der Timer den Wert "Ticks/Sekunde * Sekunden" erreicht, und zwar 
ohne Überläufe, soll er feuern. Die Ticks/Sekunde kannst du mit dem 
Prescaler einstellen, die Sekunden sind bei dir 15.

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.