1 | void Frequenzmessung_Init ( void )
|
2 | {
|
3 | GPIO_InitTypeDef GPIO_InitStructure;
|
4 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
|
5 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
6 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
7 | GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
8 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
|
9 | GPIO_Init( GPIOA, &GPIO_InitStructure );
|
10 | GPIO_PinAFConfig( GPIOA, GPIO_PinSource10, GPIO_AF_TIM1 );
|
11 |
|
12 | /* Timer */
|
13 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
|
14 | TIM_TimeBaseInitTypeDef TIM_TimeBase_InitStructure;
|
15 | TIM_ICInitTypeDef TIM_ICInitStructure;
|
16 | NVIC_InitTypeDef NVIC_InitStructure;
|
17 |
|
18 | TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
19 | TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
20 | TIM_TimeBase_InitStructure.TIM_Period = 0xFFFF;
|
21 | TIM_TimeBase_InitStructure.TIM_Prescaler = TIMER_1_PRESCALER - 1;
|
22 | TIM_TimeBaseInit( TIM1, &TIM_TimeBase_InitStructure );
|
23 |
|
24 | TIM_ICInitStructure.TIM_Channel = TIM_Channel_3;
|
25 | TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
|
26 | TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
|
27 | TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
|
28 | TIM_ICInitStructure.TIM_ICFilter = 15;
|
29 | TIM_ICInit( TIM1, &TIM_ICInitStructure );
|
30 |
|
31 | /* Timeroverflow Interrupt */
|
32 | TIM_ITConfig( TIM1, TIM_IT_Update, ENABLE );
|
33 | /* Capture Interrupt */
|
34 | TIM_ITConfig( TIM1,TIM_IT_CC3 , ENABLE );
|
35 |
|
36 | NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_TIM10_IRQn;
|
37 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
38 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;
|
39 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 15;
|
40 | NVIC_Init( &NVIC_InitStructure );
|
41 |
|
42 | NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
|
43 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
44 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;
|
45 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 15;
|
46 | NVIC_Init( &NVIC_InitStructure );
|
47 |
|
48 | TIM_ClearITPendingBit( TIM1, TIM_IT_CC3 );
|
49 | TIM_ClearITPendingBit( TIM1, TIM_IT_Update );
|
50 |
|
51 | /* Enable Timer */
|
52 | TIM_Cmd( TIM1, ENABLE );
|
53 | }
|
54 |
|
55 | /* Frequenzmessung */
|
56 | void TIM1_UP_TIM10_IRQHandler (void)
|
57 | {
|
58 | TIM_ClearITPendingBit( TIM1, TIM_IT_Update );
|
59 | }
|
60 |
|
61 | void TIM1_CC_IRQHandler (void)
|
62 | {
|
63 | TIM_ClearITPendingBit( TIM1, TIM_IT_CC3 );
|
64 | GPIOD->ODR ^= DEBUG_LED;
|
65 | }
|