Forum: Mikrocontroller und Digitale Elektronik STM32 / TIMER2 Initialisierung


von Michael W. (Gast)


Lesenswert?

Hallo !

Ich möchte unter GCC ARM /CooCox meinen TIMER2 am STM32F40 Discovery 
Board initialisieren.
Dabei gibt es ja u.A. die Funktion in stm32f4xx_tim.c, um den Prescaler 
zu konfigurieren:

1
/**
2
  * @brief  Configures the TIMx Prescaler.
3
  * @param  TIMx: where x can be  1 to 14 to select the TIM peripheral.
4
  * @param  Prescaler: specifies the Prescaler Register value
5
  * @param  TIM_PSCReloadMode: specifies the TIM Prescaler Reload mode
6
  *          This parameter can be one of the following values:
7
  *            @arg TIM_PSCReloadMode_Update: The Prescaler is loaded at the update event.
8
  *            @arg TIM_PSCReloadMode_Immediate: The Prescaler is loaded immediatly.
9
  * @retval None
10
  */
11
void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode)
12
{
13
  /* Check the parameters */
14
  assert_param(IS_TIM_ALL_PERIPH(TIMx));
15
  assert_param(IS_TIM_PRESCALER_RELOAD(TIM_PSCReloadMode));
16
  /* Set the Prescaler value */
17
  TIMx->PSC = Prescaler;
18
  /* Set or reset the UG Bit */
19
  TIMx->EGR = TIM_PSCReloadMode;
20
}
21
...
22
...
23
#define TIM_PSCReloadMode_Update           ((uint16_t)0x0000)
24
#define TIM_PSCReloadMode_Immediate        ((uint16_t)0x0001)


In der Zeile TIMx->EGR = TIM_PSCReloadMode; wird doch aber das ganze 
Register gesetzt, und nicht bloß das Bit-0. Es gibt ja andere 
Funktionen, die andere Bits setzen, und der Aufruf würde ja diese 
anderen Bits überschreiben (und umgekehrt).

Weiß der Compiler womöglich, dass er nur das Bit-0 setzen soll? Woher 
sollte diese Info aber kommen? Wie funktioniert dies also???

Besten Dank für Hinweise, die mich auf die richtige Spur führen!
Michael

von Michael W. (Gast)


Lesenswert?

ich sehe gerade, dass die Bits über Software nur gesetzt werden können. 
Das würde die Frage ja erklären - oder?

*** den Thread kann man löschen ***

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.