STM32 PWM allgemein

Gast #2609328
Lesenswert?

Hallo STM32-Benutzer,
ich versuche gerade einen Motortreier über ein PWM-Signal u steuern. Das 
ganze sollte auf meinem STM32F103 Board noch Platz finden und so hab ich 
mir mal ein wenig die Codes dazu anesen und daraus dann meine 
Initialisierung gebastlt.

Hier meine Initialisierung:
1
  /* GPIOB Configuration: TIM4 CH3 + 4 */
2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 ;
3
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
4
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
5
  GPIO_Init(GPIOB, &GPIO_InitStructure);
6

7
  /* Time base configuration */
8
  TIM_TimeBaseStructure.TIM_Period = 100;
9
  TIM_TimeBaseStructure.TIM_Prescaler = 200;
10
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
11
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
12
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
13

14
  TIM_ARRPreloadConfig (TIM4, ENABLE);
15

16
  // Update registers
17
  TIM4->EGR |= (1 << TIM_EGR_UG);
18

19
  /* PWM1 Mode configuration: Channel3 */
20
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
21
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
22
  TIM_OCInitStructure.TIM_Pulse = 10;
23
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
24
  TIM_OC3Init(TIM4, &TIM_OCInitStructure);
25

26
  TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
27

28
  /* PWM1 Mode configuration: Channel4 */
29
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
30
  TIM_OCInitStructure.TIM_Pulse = 20;
31
  TIM_OC4Init(TIM4, &TIM_OCInitStructure);
32

33
  TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
34

35
  /* TIM4 enable counter */
36
  TIM_Cmd(TIM4, ENABLE);
37
  TIM_CtrlPWMOutputs(TIM4, ENABLE);

Hat das von euch schonmal jemand gemacht? Am Ausgang messe ich nichts.
Wäre über eine kleine Hilfe echt dankbar!

P.S.: Muss ich meine Pins über einen ReMap neu programmieren? Bei 
früheren Controllern der STM32 Serie war das ja so oder? Hab in der Lib 
aber keinerlei Funktionen dazu gefunden, da das ja jetzt über GPIO_Mode 
kalppt.
Gast #2609453
Lesenswert?

1
  /* TIM3 clock enable */
2
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
3
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);


Das steht kurz vor dem Code, welchen ich gepostet hab. Also alles i.O. 
aber geht trotzdem nicht.

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