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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.