Hallo,
Ich probiere mit Timer16 auf einem STM32F334 die Frequenz meines HSE
Taktes zu messen. Der Controller läuft dabei über den HSI Takt. HSE ist
aktiviert und auf RCC_HSE_BYPASS.
Die Initialisierung sieht so aus (mit MXCube erzeugt + händische
Änderungen):
1 | TIM_HandleTypeDef htim16;
|
2 |
|
3 | TIM_IC_InitTypeDef sConfigIC;
|
4 |
|
5 | htim16.Instance = TIM16;
|
6 | htim16.Init.Prescaler = 0;
|
7 | htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
|
8 | htim16.Init.Period = 0xFFFF;
|
9 | htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
10 | htim16.Init.RepetitionCounter = 0;
|
11 | HAL_TIM_Base_Init(&htim16);
|
12 |
|
13 | HAL_TIM_IC_Init(&htim16);
|
14 |
|
15 | sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
|
16 | sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
|
17 | sConfigIC.ICPrescaler = TIM_ICPSC_DIV8;
|
18 | sConfigIC.ICFilter = 1;
|
19 | HAL_TIM_IC_ConfigChannel(&htim16, &sConfigIC, TIM_CHANNEL_1);
|
20 |
|
21 | HAL_TIMEx_RemapConfig(&htim16, TIM_TIM16_HSE);
|
22 |
|
23 | __TIM16_CLK_ENABLE();
|
24 |
|
25 | HAL_TIM_IC_Start(&htim16,TIM_TIM16_HSE);
|
Danach probiere ich den Wert des Input Capture Registers wie folgt
auszulesen:
1 | uint32_t ic = TIM16->CCR1;
|
2 | printf ("IC Value: %u\n\r", ic);
|
Bekomme allerdings die ganze Zeit 0 angezeigt.
Was habe ich übersehen bzw. vergessen zu initialisieren?
Danke,
Stefan