Hallo Leute,
habe mal eine Frage. Ich habe ein ganz einfach Programm auf meinem
STM32VL-Discovery, mit welchem ich mich ein wenig an den Timer
anfreunden wollte. Ich habe den Timer und den GPIO-Pin für die grüne LED
wie folgt initialisiert.
1 | // Activate clock for timer 2
|
2 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
|
3 | GPIO_InitTypeDef GPIO_InitStructure;
|
4 |
|
5 | // Enable clock for Port C
|
6 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
|
7 |
|
8 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
|
9 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
10 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
11 | GPIO_Init(GPIOC, &GPIO_InitStructure);
|
12 |
|
13 | // Configure timer 2
|
14 | TIM_TimeBaseInitTypeDef TIM_TimeBase_InitStructure;
|
15 | TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
16 | TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
17 | TIM_TimeBase_InitStructure.TIM_Period = 2400;
|
18 | TIM_TimeBase_InitStructure.TIM_Prescaler = 10000;
|
19 | TIM_TimeBaseInit(TIM2, &TIM_TimeBase_InitStructure);
|
20 |
|
21 | // Disable TIM2 peripheral
|
22 | TIM_Cmd(TIM2, DISABLE);
|
23 |
|
24 | // Initialize interrupt for timer 2
|
25 | NVIC_InitTypeDef NVIC_InitStructure;
|
26 | NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
|
27 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
28 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
|
29 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
|
30 | NVIC_Init(&NVIC_InitStructure);
|
31 |
|
32 | TIM2 -> CNT = 0x00;
|
33 |
|
34 | TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
|
Das Problem ist nun, obwohl die Timer Peripherie ausgeschaltet ist, wird
der Timer-Interrupt gleich nach der Initialisierung einmal ausgelöst.
Danach funktioniert alles wie es soll. Durch
und
kann ich den Timer ein- und ausschalten. Wie bekomme ich aber diesen
Auslöser ganz zu Anfang weg? Ist meine Initialisierung vielleicht
falsch?
Gruß
Mister232