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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.