STM32F103xx PWM Problem

Gast #2582914
Lesenswert?
• ▲
▼
Hallo,
Ich versuche am Pin PB13 ein PWM auszugeben um damit eine LED dimmen zu 
können. Leider gelingt es mir nicht den PWM zu aktivieren.
Weiß jemand, wo mein Fehler liegt?
1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
2

3
GPIO_StructInit(&GPIO_InitStructure); // Reset init structure
4
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13;
5
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
6
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;          
7
GPIO_Init(GPIOB, &GPIO_InitStructure);
8

9
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
10
TIM_TimeBaseStructInit( &TIM_TimeBaseInitStruct ); 
11
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV4;
12
TIM_TimeBaseInitStruct.TIM_Period = 1000 - 1;
13
TIM_TimeBaseInitStruct.TIM_Prescaler = 240 - 1;
14
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;  
15
TIM_TimeBaseInit( TIM1, &TIM_TimeBaseInitStruct );
16
  
17

18
TIM_OCInitTypeDef TIM_OCInitStruct;
19
TIM_OCStructInit( &TIM_OCInitStruct );
20
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
21
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
22
TIM_OCInitStruct.TIM_Pulse = 400; // duty cycle equals 0=0% 1000=100%
23
TIM_OC2Init( TIM1, &TIM_OCInitStruct );
24
TIM_Cmd( TIM1, ENABLE );
Gast #2582928
Lesenswert?
• ▲
▼
MC123 schrieb im Beitrag #2582914:
> TIM_OC2Init( TIM1, &TIM_OCInitStruct );

PB13 ist aber OC1Init

Außerdem:

MC123 schrieb im Beitrag #2582914:
> TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;

weiss es nicht ganz genau, kann aber sein, dass er dann nur ein mal 
durchläuft. Das würde ich erst mal auskommentieren
Gast #2582969
Lesenswert?
• ▲
▼
MC123 schrieb im Beitrag #2582941:
> es läuft leider aber trotzdem noch nicht

Hast du das gemessen oder nur "gesehen"?!


Hier mal Initcode mit dem der Timer4 bei mir initialisiert wird:
1
void TIM4_Configuration(void)
2
{
3
    TIM_OCInitTypeDef  TIM_OCInitStructure;
4
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
5
  /* TIM1 Peripheral Configuration --------------------------------------------*/
6
  /* Time Base configuration */
7
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
8
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
9
  TIM_TimeBaseStructure.TIM_Period = MAX_PWM;
10
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
11

12
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
13

14
  /* Channel 3 Configuration in PWM mode */
15
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
16
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
17
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
18
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
19
  TIM_OC3Init(TIM4, &TIM_OCInitStructure);
20

21
  /* Channel 1 Configuration in PWM mode */
22
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
23
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
24
  TIM_OCInitStructure.TIM_Pulse = 10;
25
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
26
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
27
  TIM_OC1Init(TIM4, &TIM_OCInitStructure);
28

29
  TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
30
  TIM_ARRPreloadConfig(TIM4,ENABLE);
31

32
  /* TIM1 Update DMA Request enable */
33
  TIM_DMACmd(TIM4, TIM_DMA_Update, ENABLE);
34

35
  /* TIM1 counter enable */
36
  TIM_Cmd(TIM4, ENABLE);
37
}
Gast #2585972
Lesenswert?
• ▲
▼

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