stm32 mit timer2 1ms interrupt erzeugen

Gast #2818253
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
Gast #2818254
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren