Liebe Community,
ich versuche gerade Timer 14 beim STM32F030 zum laufen zu bringen. Mit
unten gpostetem Code ging es mit Timer 15, aber hier nicht. Es scheint
einen Unterschied zu geben, der vermutlich einfach ist, aber ich komme
nicht drauf.
Er kommt einfach nicht in die ISR (Breakpoint wird nicht erreicht, GPIO
tut nix).
- GCC5.2
- STM-Standard-Periph.
- Nacktes Eclipse
1 | void INTTIM_Config(void)
|
2 | {
|
3 | TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
|
4 |
|
5 | NVIC_InitTypeDef NVIC_InitStructure;
|
6 | /* Enable the TIM2 gloabal Interrupt */
|
7 | NVIC_InitStructure.NVIC_IRQChannel = TIM14_IRQn;
|
8 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
9 | NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
|
10 | NVIC_Init(&NVIC_InitStructure);
|
11 |
|
12 | /* TIM2 clock enable */
|
13 | RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
|
14 |
|
15 | /* Time base configuration */
|
16 | /* Berechnung der Frequenz:
|
17 | *
|
18 | * F_CLK=48Mhz
|
19 | * F_Timer=40kHz
|
20 | * TM_Period = F_CLK/F_Timer
|
21 | * <=> TM_Period = 48Mhz/40Khz = 1200
|
22 | * wenn Prescaler und Devision = 0
|
23 | *
|
24 | */
|
25 | TIM_TimeBaseStructure.TIM_Period = 1200;
|
26 | TIM_TimeBaseStructure.TIM_Prescaler = 1; /
|
27 | TIM_TimeBaseStructure.TIM_ClockDivision = 1;
|
28 | TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
29 | TIM_TimeBaseStructure.TIM_RepetitionCounter = 2;
|
30 | TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
|
31 | /* TIM IT enable */
|
32 | TIM_ITConfig(TIM14, TIM_IT_Update, ENABLE);
|
33 | /* TIM2 enable counter */
|
34 | TIM_Cmd(TIM14, ENABLE);
|
35 | }
|
36 |
|
37 | void TIM14_IRQHandler(void)
|
38 | {
|
39 | TIM14->SR = ~0x0001;
|
40 | GPIOB->BSRR = GPIO_Pin_4;
|
41 | GPIOB->BRR = GPIO_Pin_4;
|
42 | }
|
Was ist mein Problem, habe ich irgendeinen Wert nicht konfiguriert oder
eine Clock vergessen?
Vielen Dank für Eure Hilfe
Christoph