- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 32

Thema: SMT32 - Ports konfigurieren, Frage zur C-Syntax

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Ah ja...vielen Dank, jetzt ist mir Einiges schon viel klarer, ein paar Feagen hab ich aber noch.

    Was ist eigentlich die genaue Funktion des Output-Speed-Registers? Ich werd da aus dem Datenblatt nicht schlau, kann aber auch daran liegen daß ich immer noch mehr oder weniger in meiner AVR-Denke drinhänge und imemr wieder staune, um welchen Mist man sich beim ARM kümmern muß.
    Muß ich das Speed-Register eigentlich beschreiben oder wird sich auch so etwas tun?

    Ich muß ja, soweit ich das mitbekommen habe, den Port noch irgendwie an einen Bus anbinden. Nach was richtet man sich da, woher weiß ich wie ich da den Port am besten wo anbinde? Wie geht man da vor allem vor, wenn man etwas mehr Peripherie verwendet?

    Kann meinen Code leider nicht testen, weil ich Embedded Studio nicht mit dem J-Link zusammenkriege.
    J-Link Commander hat aber seltsamerweise keine Probleme mit dem J-Link zu quatschen.

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <stm32f446xx.h>
    
    /*********************************************************************
    *
    *       main()
    *
    *  Function description
    *   Application entry point.
    */
    void main(void) {
    GPIOA->MODER |= (GPIO_MODER_MODER5_0);    //A5 => Ausgang
    GPIOA->OTYPER |= (GPIO_OTYPER_OT_5);      //A5 0> OpenDrain
    GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR5);     //A5 ohne Pullup-Pulldown
    }

  2. #2
    Unregistriert
    Gast
    Der Output-Speed ist für die Schaltflanken der IOs zuständig.
    Er kontrolliert also die Slew-Rate (also die Anstiegs- und Abfallzeit der Flanken).
    Je größer die Anstiegszeit, desto größer sind die abgestrahlten Störsignale. Daher sollte man den Output Speed nur so schnell wie nötig konfigurieren.

    Das Speed-Register musst Du übrigens nicht beschreiben, nach dem Reset ist die Default-Einstellung 00 (also Low speed). Nur Port B ist da eine Ausnahme.

    Die Komplexität hat übrigens nichts mit dem ARM-Kern zu tun. ST hätte auch Simpel-Peripherie wie beim AVR an den Cortex anbinden können. Aber das wäre doch Verschwendung

    Was Du mit "Bus-Anbinden" meinst, verstehe ich nicht. Der Port läuft nach dem Reset sofort (bis auf die paar Ausnahmen wie JTAG, etc.). Du musst nur den Takt für den entsprechenden Port einschalten, wie auch für jede andere Peripherie.
    Also z.B. für Port A:
    Code:
    RCC->AHB1ENR |= ( RCC_AHB1ENR_GPIOAEN );
    Danach kannst Du dann ganz normal Bits setzen oder zurücksetzen:
    Code:
    GPIOA->BSRR |= GPIO_BSRR_BS_0;
    oder
    Code:
    GPIOA->BSRR |= GPIO_BSRR_BR_0;
    Oder meinst Du das Umlegen der Peripherie-Funktionen auf andere Pins über das AFR-Register?



    Zitat Zitat von White_Fox Beitrag anzeigen
    Ah ja...vielen Dank, jetzt ist mir Einiges schon viel klarer, ein paar Feagen hab ich aber noch.

    Was ist eigentlich die genaue Funktion des Output-Speed-Registers? Ich werd da aus dem Datenblatt nicht schlau, kann aber auch daran liegen daß ich immer noch mehr oder weniger in meiner AVR-Denke drinhänge und imemr wieder staune, um welchen Mist man sich beim ARM kümmern muß.
    Muß ich das Speed-Register eigentlich beschreiben oder wird sich auch so etwas tun?

    Ich muß ja, soweit ich das mitbekommen habe, den Port noch irgendwie an einen Bus anbinden. Nach was richtet man sich da, woher weiß ich wie ich da den Port am besten wo anbinde? Wie geht man da vor allem vor, wenn man etwas mehr Peripherie verwendet?

    Kann meinen Code leider nicht testen, weil ich Embedded Studio nicht mit dem J-Link zusammenkriege.
    J-Link Commander hat aber seltsamerweise keine Probleme mit dem J-Link zu quatschen.

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <stm32f446xx.h>
    
    /*********************************************************************
    *
    *       main()
    *
    *  Function description
    *   Application entry point.
    */
    void main(void) {
    GPIOA->MODER |= (GPIO_MODER_MODER5_0);    //A5 => Ausgang
    GPIOA->OTYPER |= (GPIO_OTYPER_OT_5);      //A5 0> OpenDrain
    GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR5);     //A5 ohne Pullup-Pulldown
    }

Ähnliche Themen

  1. Syntax-Frage -> writeString(char *string)
    Von Furzgas im Forum Robby RP6
    Antworten: 13
    Letzter Beitrag: 31.12.2009, 08:06
  2. Frage zum Ansteuern von Ports/Programmierfrage
    Von Geimel im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 26.01.2007, 22:29
  3. Kurze Syntax Frage
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 18.01.2007, 18:58
  4. Frage zum Programmieren der Ports
    Von Geimel im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 07.08.2006, 19:29
  5. kleine Frage zur Syntax
    Von freddy0815 im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 07.02.2005, 14:19

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress