TIM6 und NVIC beim STM32F100

Gast #2926035
Lesenswert?

Moin!

Ich versuche gerade, den Timer 7 beim ST32F100 (auf dem 
STM32Discoveryboard) zum laufen zu bekommen, so dass er beim 
Update-Event einen Interrupt auslöst.

So sehen meine Versuche bis jetzt aus:
1
void TIM7_IRQHandler(void)
2
{
3
  GPIOC->ODR += 1;
4
  TIM_ClearITPendingBit(TIM7, TIM_IT_Update);
5
}
6

7
void main(void)
8
{
9
  // TIM7 initialisieren
10
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
11
  TIM_TimeBaseStructure.TIM_Period = 0xffff;
12
  TIM_TimeBaseStructure.TIM_Prescaler = 0xffff;
13
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
14
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
15
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0000;
16
  TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure);
17

18
  // Interrupt für TIM7 initialisieren
19
  NVIC_InitTypeDef NVIC_InitStructure;
20
  NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQChannel;
21
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
22
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
23
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
24
  NVIC_Init(&NVIC_InitStructure);
25

26
  // low speed peripheral clock für TIM7 (sollte 32.768kHz sein)
27
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);
28

29
  // interrupt enablen - nur update-events für die Basic Timer
30
  TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE);
31

32
  // TIM7 enable
33
  TIM_Cmd(TIM7, ENABLE);
34

35
  while(1);
36
}

Das Problem ist folgendes: Das Update Event findet immer im gleichen 
Abstand statt, egal was in TimeBaseInit steht. Der Prescaler hat auch 
keinen Einfluss.
Kann ich über den Prescaler den Abstand zwischen zwei Update-Events 
beeinflussen und wenn ja, was mache ich falsch dabei?

Vielen Dank für die Hilfe
Christian

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