Timer 32 Mhz oder 72 Mhz ?

Gast #3505435
Lesenswert?
• ▲
▼
Hallo,

Ich versuche meinen Timer 2 (TIM2) zu konfigurieren. Ich möchte gerne 
das dieser einen Interrupt nach 1ms genieriert.
Ich nutze das SM3210E-Eval Board.

Ich bin mir aber nicht so sicher ob ich hiermit richtig liege....


Auf Seite 13. sind die Taktsignale dargestellt.

http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00253742.pdf

Laut Dokument läuft die APB1 mit 32 MHZ aber mich stört dieser Teil:

If (APB1 prescaler =1) x1
else  x2

habe ich hier nun 32Mhz oder 72Mhz ?

unten ist mein Code wo ich von 72 Mhz ausgehe

1
  // enable TIMER TIM2 system clock
2
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
3
  
4
  
5
 /* Enable the Timer2 Interrupt */
6
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
7
  
8
  NVIC_InitStructure->NVIC_IRQChannel = TIM2_IRQn;             //  configure the Timer2 interrupts
9
  NVIC_InitStructure->NVIC_IRQChannelPreemptionPriority = 3;   //  sets the priority group of the TIMER2 interrupts
10
  NVIC_InitStructure->NVIC_IRQChannelSubPriority = 0;           //  set the subpriority inside the group
11
  NVIC_InitStructure->NVIC_IRQChannelCmd = ENABLE;             //  TIMER2 interrupts are globally enabled
12
  NVIC_Init(NVIC_InitStructure);    
13
  
14
  /* Configure Timer which is every 1  ms active*/
15
  TIM_DeInit(TIM2);
16
  TIM_TimeBaseStructInit(TIM_TimeBaseStructure);
17
 
18
  /* Time base configuration */
19
  TIM_TimeBaseStructure->TIM_Prescaler = 360 - 1; // 72 MHz / 360 = 200 khz
20
  TIM_TimeBaseStructure->TIM_Period = 200 - 1;    // (1/200khz) * 200 = 1 ms;
21
  TIM_TimeBaseStructure->TIM_ClockDivision = TIM_CKD_DIV1;
22
  TIM_TimeBaseStructure->TIM_CounterMode = TIM_CounterMode_Up;
23
  TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure);
24
  
25
  //TIM_PrescalerConfig(TIM2, 360-1 , TIM_PSCReloadMode_Immediate);
26
  
27
  /* Enable TIM2 Update Interrupt */
28
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
29
 
30
  /* Enable TIM2 */
31
  TIM_Cmd(TIM2,ENABLE);
#3505487
Lesenswert?
• ▲
▼
Die Aussage bedeutet, wenn Du einen Teilerwert von 2,4,8 oder 16 
benutzt, dann ist der Timertakt doppelt zu groß wie APB1. Bei einem 
Teiler von 1, ist der APB1 gleich HCLK und der Timertakt ich dann auch 
gleich APB1.

Du hast einen Teiler von 2?
Dein HCLK ist 72MHz?
Dann ist dein Timertakt 2x32MHz=72MHz.

Wenn Du allerdings nicht selbst feststellen kannst ob dein Interrupt 
aller 1ms kommt, dann kann dir sowieso keiner helfen.

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.