- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 19

Thema: STM32F100/ Capture Compare Unit

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.07.2011
    Beiträge
    35
    Doch du hast Recht.
    Dein letztes Tipp war echt Goldig.
    Es funktioniert endlich!!!!!!!!!!!!

    Man! wie sollte ich als Anfänger darauf kommen???
    Ohne dein Tipe werde ich es nicht entdecken.

    Vielen Dank.

    Um diese harte Lektion nicht zu vergessen, möchte ich gerne den Grund dafür verstehen.
    Kannst du bitte das erkklären?

    LG

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Das intialisieren von µ ist eigentlich bestimmte register fullem mit die richtige Dateien. Um das zu erleichteren hat ST schone Librarys geschrieben, womit al diese Initialisierungen gemacht werden konnen. Fast alle Functionen nutzen dabei "Structures". Ein Structure ist ein Datensatz in C, welche man selbst zusammenstellen kan. Beispiel : In die TIM library ist diesen Structure programmiert :
    Code:
    /** 
      * @brief  TIM Time Base Init structure definition
      * @note   This sturcture is used with all TIMx except for TIM6 and TIM7.    
      */
    typedef struct
    {
      uint16_t TIM_Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
                                           This parameter can be a number between 0x0000 and 0xFFFF */
      uint16_t TIM_CounterMode;       /*!< Specifies the counter mode.
                                           This parameter can be a value of @ref TIM_Counter_Mode */
      uint16_t TIM_Period;            /*!< Specifies the period value to be loaded into the active
                                           Auto-Reload Register at the next update event.
                                           This parameter must be a number between 0x0000 and 0xFFFF.  */ 
      uint16_t TIM_ClockDivision;     /*!< Specifies the clock division.
                                          This parameter can be a value of @ref TIM_Clock_Division_CKD */
      uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
                                           reaches zero, an update event is generated and counting restarts
                                           from the RCR value (N).
                                           This means in PWM mode that (N+1) corresponds to:
                                              - the number of PWM periods in edge-aligned mode
                                              - the number of half PWM period in center-aligned mode
                                           This parameter must be a number between 0x00 and 0xFF. 
                                           @note This parameter is valid only for TIM1 and TIM8. */
    } TIM_TimeBaseInitTypeDef;
    Um diesen Structure zu nutzen machne wir erst eine "Variable Name" das diesen Structure hat : 'TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;"
    Was men jetzt macht bei Init ist diese Structure erst fullen mit die richtige Daten, und dan wird mit eine Function " TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);" diesen Structure genutzt um alle Register zu setzen.
    Wen wir noch eine 2den Timer intialisieren mochte, konnen wir die gleiche "Variable Name" nutzen, und ein zweite mal diesen Structuren mit daten fullen.
    Die Daten von erste Mal werden dan ueberschrieben, aber das ist unwichtig, da wir schon alle Daten in register kopiert sind bei aufrufen von " TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);"
    Die Reihenfolge ist naturlich sehr wichtig !! So, erst die Structure fullen mit Daten, dan die Init Function aufrufen, dan wen notwendig wieder fullen mit Daten für eine Zweite Timer, und dan wieder die Init Function aufrufen. Ich hffe das ich jetzt en bischen Klarheit geschafft haben in diese Materie.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    07.07.2011
    Beiträge
    35
    Vielen Danke für die Erklärung.

Ähnliche Themen

  1. ISR per Output Compare funktioniert nicht wie gewünscht
    Von Sebastian132 im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 24.07.2006, 11:22
  2. Fragen zu Compare -> Timer
    Von Rage_Empire im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 21.11.2005, 18:35
  3. Problem mit Timer1 und Compare...
    Von Murus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 12.11.2005, 16:34
  4. Compare Register
    Von chouifi im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 31.10.2005, 13:47
  5. Wie Compare Register Werte sicher ändern?
    Von Werner_Just im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 22.04.2005, 14:29

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen