STM32F405RGT6 Timer1 PWM

OP #5118075
Lesenswert?
• ▲
▼
Hallo

Bei meiner Fragestellung geht es um den PWM1 mit dem Timer1 Channel 1. 
Ich steuere einen BLDC Motor mittels PWM an. Dazu verwende ich einen 
STM32F405RGT6.

Beim debuggen sehe ich im yVision, dass der Timer 1 rauf zählt. Aber am 
Pin PB13 rührt sich nichts. Zu Testzwecken habe ich einen PWM mittels 
Timer 2 aufgesetzt. Das hat funktioniert. Timer 1 und 8 sind ja Advanced 
Timer. Ich habe aber nirgends gesehen, dass diese anders angesteuert 
werden müssen.

Zu meinen Fragen:
Habe ich die Bedeutung von der Bezeichnung "TIM1_CH1N" falsch gedeutet? 
Das N bedeutet doch eine Negation?

Und ich konnte im Datenblatt für die Ansteuerung des PWM mittels 
Advanced Timer gegenüber dem Timer 2 keinen, zum Problem passenden 
Unterschied sehen.

Vielleicht kann mir jemand helfen?

Besten Dank!
MC Bu
1
const     uint32_t  TIM1_PWM_Prescaler           = 10;
2
          uint32_t  TIM1_PWM_AutoReload_Value   = 245;
3

4
GPIO_InitTypeDef GPIO_InitStructure;
5
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
6
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_13;
7
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
8
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
9
GPIO_Init(GPIOB, &GPIO_InitStructure);
1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
2
  
3
  /* Time base configuration */
4
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
5
  TIM_TimeBaseStructure.TIM_Period             = TIM1_PWM_AutoReload_Value;  // Full periode
6
  TIM_TimeBaseStructure.TIM_Prescaler         = TIM1_PWM_Prescaler;         // Update all 40us
7
  TIM_TimeBaseStructure.TIM_ClockDivision     = TIM_CKD_DIV1;
8
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 1; 
9
  TIM_TimeBaseStructure.TIM_CounterMode       = TIM_CounterMode_Up;
10
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
11
    
12
  {
13
    TIM_BDTRInitTypeDef bdtr;
14
    TIM_BDTRStructInit (&bdtr);
15
    bdtr.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
16
    TIM_BDTRConfig (TIM1, &bdtr);
17
  }
18
    
19
  /* Time Output Mode configuration */
20
  TIM_OCInitTypeDef    TIM_OCInitStruct;      
21
  TIM_OCStructInit(&TIM_TimeOutputModeStructure);
22
  TIM_TimeOutputModeStructure.TIM_OCMode         = TIM_OCMode_PWM1;
23
  TIM_TimeOutputModeStructure.TIM_OCIdleState     = TIM_OCIdleState_Set;
24
  TIM_TimeOutputModeStructure.TIM_OutputState   = TIM_OutputState_Disable;
25
  TIM_TimeOutputModeStructure.TIM_OutputNState   = TIM_OutputState_Enable;
26
  TIM_TimeOutputModeStructure.TIM_OCPolarity    = TIM_OCPolarity_Low;
27
  TIM_TimeOutputModeStructure.TIM_OCNPolarity   = TIM_OCNPolarity_High;
28
  TIM_TimeOutputModeStructure.TIM_Pulse         = 100;
29
  TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  
30
  TIM_OC1Init(TIM1, &TIM_TimeOutputModeStructure);
31
  
32
  TIM_ARRPreloadConfig(TIM1, ENABLE);  
33
  TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
34
  TIM_CCxCmd(TIM1, TIM_Channel_1, ENABLE);
35
  TIM_CtrlPWMOutputs(TIM1, ENABLE);
36
  TIM1->EGR |= (1 << TIM_EGR_UG);
37
  
38

39
  /* TIM enable counter */
40
  TIM_Cmd(TIM1, ENABLE);

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.