Hallo zusammen, ich habe etwas Verwirrung bzgl. der Auswahl der "alternate functions" beim G431. Folgendes gemacht: 1) Timer3 konfiguriert als PWM 2) PB4 als AF2 (TIM3_CH1) GPIO->AFR[0] = 2 So geht das auch prima. Beim weiteren Lesen des DB (und weiteren Beispielen) habe ich festgestellt, das man auch in GPIO->MODER noch als Mode noch "alternate function mode" (0x10) einstellen sollte. Füge ich das ein, also 1) Timer3 konfiguriert als PWM 2) in GPIO->MODER für PB4 alternate function mode setzen 3) PB4 als AF2 (TIM3_CH1) mit GPIO->AFR[0] = 2 geht es nicht mehr, der PB4 floated. Irgendeine Idee?
Es liegt daran, dass der Pin nach Reset im Alternate Mode ist. Steht auch so im Reference Manual. Was sagt denn der Debugger?
:
Bearbeitet durch User
Alex R. schrieb: > Es liegt daran, dass der Pin nach Reset im Alternate Mode ist. > Steht auch so im Reference Manual. Nein. Ist im Analog-Modus. > Warum du ausgerechnet beim Setzen des Modes deines Pins in den > Prosamodus gehst, verstehe uch nicht. > > Auf welchen Wert setzt du denn den Modus? Er sollte 2 sein. Genau: Raoul D. schrieb: > Beim weiteren Lesen des DB (und weiteren Beispielen) habe ich > festgestellt, das man auch in GPIO->MODER noch als Mode noch "alternate > function mode" (0x10) einstellen sollte. Das war ein Schreibfehler: 0x02 Und der war auch im Code ;-) Danke!
:
Bearbeitet durch User
Raoul D. schrieb: > 1) Timer3 konfiguriert als PWM > 2) PB4 als AF2 (TIM3_CH1) GPIO->AFR[0] = 2 Logisch, denn PB4 ist nach Reset als JTRST eingestellt, d. h. AF0. Klar, dass man dann nur noch AFR umstellen muss ... Das sieht man auch wenn man einfach mal ins RM schaut: "9.4.1 GPIO port mode register (GPIOx_MODER) ... Reset value: 0xFFFF FEBF (for port B)" Für PB4 also '10', sprich "Alternate Mode" > Beim weiteren Lesen des DB (und weiteren Beispielen) habe ich > festgestellt, das man auch in GPIO->MODER noch als Mode noch "alternate > function mode" (0x10) einstellen sollte. Das Lesen des RM ist meist deutlich hilfreicher, als Fehler/Ungenauigkeiten aus irgendwelchen obskuren Beispielen zu kopieren. > Füge ich das ein, also > 1) Timer3 konfiguriert als PWM > 2) in GPIO->MODER für PB4 alternate function mode setzen > 3) PB4 als AF2 (TIM3_CH1) mit GPIO->AFR[0] = 2 > > geht es nicht mehr, der PB4 floated. > > Irgendeine Idee? Ja: Irgendetwas falsch gemacht. Es wäre sinnvoll, mal danach im MODER nachzusehen, ob wirklich das drinsteht, was man GLAUBT, da hineingeschrieben zu haben. Merke: Wunschdenken und Realität sind oftmals leicht verschieden.
Schau mal im RM0440 nach. Da bekommst du viel mehr Informationen als im normalen Datenblatt. Zu jedem Bereich bekommst du auch eine Auflistung der Register und deren Reset-Werte. Wenn sie sich zwischen den einzelnen Gruppen unterscheiden (z.B. GPIOA, GPIOB,... oder USART1, USART2...) stehen die Resetwerte jeweils da.
Andreas B. schrieb: > Reset value: 0xFFFF FEBF (for port B)" Ja, das hatte ich zwar übersehen, hat aber nichts mit meinem Problem zu tun ;-) Andreas B. schrieb: > Das Lesen des RM ist meist deutlich hilfreicher Sorry, mit DB meinte ich auch RM. Andreas B. schrieb: > sinnvoll, mal danach im MODER > nachzusehen, ob wirklich das drinsteht, was man GLAUBT, da > hineingeschrieben zu haben. Nö, es war einfach der o.g. Fehler: 0x10 statt 0b10.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.