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