Forum: Mikrocontroller und Digitale Elektronik stm32 mit timer2 1ms interrupt erzeugen


von Zwerch (Gast)


Lesenswert?

Guten Morgen,

ich hab den Timer2 auf dem stm32f103ret. Der soll per InterruptHandler 
jede millisekunde mein

mseccount++;

setzen. Wie muss ich denn dazu meinen Code umschreiben?

1
void Timer2Init() //alle 500msec 
2
{
3
TIM_TimeBaseInitTypeDef TIM_TimeBase_InitStructure;
4
  NVIC_InitTypeDef NVIC_InitStructure;
5
6
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
7
 
8
  TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
9
  TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
10
  TIM_TimeBase_InitStructure.TIM_Period = 1999;
11
  TIM_TimeBase_InitStructure.TIM_Prescaler = 17999;
12
  TIM_TimeBaseInit(TIM2, &TIM_TimeBase_InitStructure);
13
 
14
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
15
 
16
  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
17
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
18
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
19
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
20
  NVIC_Init(&NVIC_InitStructure);
21
 
22
  TIM_Cmd(TIM2, ENABLE);
23
  
24
  }

Der Handler
1
void TIM2_IRQHandler(void)
2
{
3
  mseccount++;
4
  TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
5
}

Gibt es einen einfachen Trick im STM32, die Variable vor einem Überlauf 
zu bewahren? (ist aber nicht so relevant).

MfG
Zwerch

von Dr. Sommer (Gast)


Lesenswert?

Versuche doch ausnahmsweise mal deinen eigenen Verstand zu benutzen. 
Überlege dir doch mal, was diese beiden Zeilen
1
TIM_TimeBase_InitStructure.TIM_Period = 1999;
2
TIM_TimeBase_InitStructure.TIM_Prescaler = 17999;
 bedeuten (dazu gibts im übrigen eine Doku), dann ergibt sich der Rest 
fast von selbst.

Zusammenkopieren von Beispielcodes, und Anpassungen gratis auf 
mikrocontroller.net machen zu lassen führt wahrscheinlich zu nichts, und 
der Lerneffekt bleibt auch eher aus. Lerne doch ersteinmal richtig C, 
und beginne mit einer einfacherern Mikrocontroller-Architektur wie AVR. 
Wenn du die ganz beherrschst - was aufgrund der Einfachheit nicht allzu 
utopisch ist - versuchst du es nocheinmal mit den STM32.

von Dr. Sommer (Gast)


Lesenswert?

PS: Für die anderen Leser, der Grund für obige Ausdrucksweise sind die 
weiteren Threads des OP:
Beitrag "STM32 USART2 wie mehrere bytes empfangen?"
Beitrag "UART echo bzw. loopback (STM32)"

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.