STM32F103RCT7: Timer geht nicht

OP #7181609
Lesenswert?

Hallo,

ich habe einen STM32F103RCT7 und arbeite mit CubeMX. Ich möchte eine 
primitives Programm schreiben, das einen Pin mittels Timer toggelt. Der 
Timer läuft aber nicht. Habe Timer 3 und Timer 4 verwendet, bei beiden 
das selbe Problem.
1
  MX_TIM3_Init();
2
  MX_TIM4_Init();
3
  /* USER CODE BEGIN 2 */
4

5
  HAL_Delay(100);
6
  HAL_TIM_Base_Start_IT(&htim3);  // Timer3 starten
7
  HAL_TIM_Base_Start_IT(&htim4);  // Timer4 starten

....
1
static void MX_TIM3_Init(void)
2
{
3

4
  /* USER CODE BEGIN TIM3_Init 0 */
5

6
  /* USER CODE END TIM3_Init 0 */
7

8
  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
9
  TIM_MasterConfigTypeDef sMasterConfig = {0};
10

11
  /* USER CODE BEGIN TIM3_Init 1 */
12

13
  /* USER CODE END TIM3_Init 1 */
14
  htim3.Instance = TIM3;
15
  htim3.Init.Prescaler = 49;
16
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
17
  htim3.Init.Period = 1000;
18
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
19
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
20
  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
21
  {
22
    Error_Handler();
23
  }
24
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
25
  if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
26
  {
27
    Error_Handler();
28
  }
29
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
30
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
31
  if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
32
  {
33
    Error_Handler();
34
  }
35
  /* USER CODE BEGIN TIM3_Init 2 */
36

37
  /* USER CODE END TIM3_Init 2 */
38

39
}

Ich habe ja schon öfter einen Timer verwendet, hat bisher immer 
geklappt. Allerdings waren es andere STM32-Typen. Mir ist nicht klar, 
warum der Timer hier nicht geht. Die Register des Timers sind alle Null. 
Hat jemand eine Idee, woran es liegen könnte?
Angehängte Dateien:
Gast #7181628
Lesenswert?

Es sind die Bits in RCC_APB1ENR bzw. RCC_APB2ENR gemeint. Bei jedweder 
Peripherie ist das typ. Symptom, dass beim Lesen der Register nur Nullen 
herauskommen egal was man vorher heineingeschrieben hat bzw. 
hineinschreiben wollte.
OP #7181659
Lesenswert?

Es geht nun. Bei dem STM32-Typ muß man anscheinend mehr machen als bei 
den bisher verwendeten:
1
 /* USER CODE BEGIN SysInit */
2
  __HAL_RCC_TIM3_CLK_ENABLE();  // Takt für Timer 3 einschalten
3
  /* USER CODE END SysInit */
4

5
  /* Initialize all configured peripherals */
6
  MX_GPIO_Init();
7
  MX_TIM3_Init();
8
  /* USER CODE BEGIN 2 */
9
  HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); //Enable the peripheral IRQ
10
  HAL_NVIC_EnableIRQ(TIM3_IRQn);
11

12
  HAL_TIM_Base_Start_IT(&htim3);  // Timer3 starten
13
  /* USER CODE END 2 */

Danke für Eure Hilfe!
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren