STM32f103 Timer

Gast #1762619
Lesenswert?

Hallo,
ich versuche gerade den TIM2 des STM32f103 als Timebase laufen zu 
lassen. (Der Systick geht ohne Probleme es wird jedoch eine 2. 
unabhängige Timebase benötigt).

Ich verwende die STD-Lib von ST
Zu erst wird RCC auf 24Mhz initialisiert (SysCLK HCLK und PCLK2)
und auch für TIM2 Enabled.
Diese Werte kann ich auch per RCC_GetClocksFreq() bestätigen.
als nächstes initialisiere ich den Timer:
1
  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
2
  TIM_TimeBaseStructInit(TIM_TimeBaseStructInit);
3
  TIM_TimeBaseStructure.TIM_Period = 50;
4
  TIM_TimeBaseStructure.TIM_Prescaler = 8;
5
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
6
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
7
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
8

9
  /* TIM IT enable */
10
  TIM_ITConfig(TIM2, TIM_IT_CC1 , ENABLE);
11
  
12
  /* TIM2 enable counter */
13
  TIM_Cmd(TIM2, ENABLE);
14
  
15
  
16
  
17
  NVIC_InitTypeDef NVIC_InitStructure;
18
  
19
  /* Enable the TIM2 gloabal Interrupt */
20
  NVIC_InitStructure.NVIC_IRQChannel =  TIM2_IRQChannel;
21
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
22
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
23
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
24
  
25
  NVIC_Init(&NVIC_InitStructure);

Im TIM2_IRQHandler lass ich nun nen Pin Toggeln.
Das Problem ist, das zwar der Interrupt angesprungen wird, jedoch:
1. Die Frequenz nicht passt und auch komische Werte annimmt wenn man an 
Prescaler und Period dreht (Periode um Faktor 10 größer erzeugte 
Frequenz nur Faktor 4 größer)
2. Es keine Auswirkungen zeigt wenn ich an der ClockDivision dreh

Ich hoffe ihr könnt mir weiterhelfen

Mfg
TSE
Gast #1762889
Lesenswert?

was ist denn dein "TIM2_IRQChannel" ? Sollte das nicht "TIM2_IRQn" sein?
warum ist  NVIC_Init zu spät? Ich konfiguiere auch immer erst den Timer 
und dann den NVIC -> funktioniert - warum auch nicht?

Grüße

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