Hi,
ich möchte gerne einen einfachen Timer nutzen.
Aus den Beispielen habe ich mir das hier rausgesucht:
1 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
|
2 |
|
3 | TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
|
4 | /* Time base configuration */
|
5 | TIM_TimeBaseStructure.TIM_Period = 65535;
|
6 | TIM_TimeBaseStructure.TIM_Prescaler = 0;
|
7 | TIM_TimeBaseStructure.TIM_ClockDivision = 0;
|
8 | TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
9 |
|
10 | TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
|
11 |
|
12 | NVIC_InitTypeDef NVIC_InitStructure;
|
13 | /* Enable the Interrupt */
|
14 | NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
|
15 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
16 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
|
17 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
18 | NVIC_Init(&NVIC_InitStructure);
|
19 |
|
20 | TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
|
21 |
|
22 | TIM_Cmd(TIM2, ENABLE);
|
Mein Interrupt wird auch angesprungen, aber egal was ich für Werte für
Period oder Prescaler setze, das Interval ist immer 6,4µs. Den Wert habe
ich vom Logiganalyser, da ich im Interrupt Handler einen Pin toggle.
Hat einer von euch ne Idee? Eigentlich will ich einfach einen Timer
initialisieren, der mir nach definierter Zeit einen IRQ auslöst, es sei
denn ich setze den Timer davor auf Null zurück.
Kann doch eigentlich nicht so kompliziert sein. Die ganzen Beispiele
betreffen alle gleich viel komplizierte Anwendungen.
Gruß
Tom