Hallo, gibt es beim Stm32F103 an Pin 4 eine Besonderheit? Obwohl ich den als AUsgang konfiguriert habe, funktionieren er nicht wie gewünscht um Enable vom LCD zu steuern. Muss da noch ein register gesetzt werden?
Ich sehe gerade der muss remapped werden:-( Wie macht man das ohne HAL?
Tomas pk. schrieb: > Ich sehe gerade der muss remapped werden:-( Wie kommst du darauf? Welche komplexe I/O Schnittstelle willst du denn auf diesen beiden Pins fahren? Es geht ja nur entweder GPIO oder SPI, aber dann reden wir von PA15 und PB3 bis PB5). Wie dem auch sei, das Remappen tut man durch beschreiben des AFIO->MAPR Registers. Siehe dazu http://stefanfrings.de/stm32/stm32f1.html#bluepill
Nix aufwendiges. Selbst ein LED Blinken ist ohne nicht möglich. Ales anderen B Ports gehen, nur eben B4 nicht
Nicht jeder Pin ist gpio nach reset. Siehe Datasheet Seite 32.
Tomas pk. schrieb: > Ich sehe gerade der muss remapped werden:-( > Wie macht man das ohne HAL?
1 | uint32_t x = AFIO->MAPR; |
2 | x &= ~AFIO_MAPR_SWJ_CFG; |
3 | x |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; |
4 | AFIO->MAPR = x; |
für "JTAG-DP Disabled and SW-DP Enabled".
1 | // DISABLE JTAG, Enable SWD
|
2 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); |
3 | GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // Disable JTAG/SWD so pins are available |
Pille
Ach so jetzt schnalle ich, was er will. Also nichts remappen, sondern JTAG deaktivieren. Das ist auf der selben Seite beschrieben: http://stefanfrings.de/stm32/stm32f1.html#swjdisable Entspricht im Prinzip den beiden vorherigen Vorschlägen.
Ahhh, super danke. So funktionierts:-)
1 | // Enable clock for alternate functions |
2 | RCC_APB2ENR.B0:=1; |
3 | |
4 | // Disable both SWD and JTAG to free PA13, PA14, PA15, PB3 and PB4 |
5 | AFIO_MAPR.B25:=1; |
Johannes S. schrieb: > Nicht jeder Pin ist gpio nach reset. Siehe Datasheet Seite 32. Nein, die SWJ Schnittstelle ist die eine Ausnahme, auf die Tomas gestoßen ist.
Stefan ⛄ F. schrieb: > Tomas pk. schrieb: >> AFIO_MAPR.B25:=1; > > Was ist das für eine Programmiersprache? Pascal bzw Pascal von Mikroe
Stefan ⛄ F. schrieb: > Nein, die SWJ Schnittstelle ist die eine Ausnahme, Nö, das ist nicht falsch sondern allgemeiner formuliert. Was ist mit PB9? Das ist auch kein normaler gpio. Es ist nicht üblich das alle IO sich gleich verhalten und das sollte man im Datenblatt prüfen. Die PCx sind 'schwächer' als andere IO, nicht alle sind 5V tolerant, andere µC können den Reset umprogrammieren. Auch tückisch sind echte I2C Pins mit open drain ohne Pull Up (haben die LPC z.B.). Und auch beim AVR Mega32 war ein FAQ 'warum funktioniert mein PortC nicht richtig?'. Nur auf SWJ/JTAG zu achten reicht nicht.
Johannes S. schrieb: > Was ist mit PB9? Ja was denn? Ich würde sagen, es ist nach dem Reset ein normaler GPIO Pin. > Nur auf SWJ/JTAG zu achten reicht nicht. Sicher. Wenn du dir meine Webseite angesehen hättest, dann wäre dir aufgefallen, dass ich dort auf alle von dir genannten Ausnahmen hinweise. Außer auf PB9. Was habe ich versäumt?
Das ist nur ein Input und der beeinflusst das Bootverhalten, darf also auch nicht einfach als normaler gpio betrachtet werden.
Johannes S. schrieb: > Das ist nur ein Input und der beeinflusst das Bootverhalten, darf also > auch nicht einfach als normaler gpio betrachtet werden. NichtWichtig schrieb: > Wie immer: RTFM Wo denn? Ich habe gerade zum 3. mal ins Datenblatt und ins Referenzhandbuch geschaut und keine besonderen Hinweise zu PB9 gefunden. Nach meinem Kenntnisstand wird der Bootloader durch die Pins Boot0 und Boot1 (=PB2) gesteuert. Den PB2 kann man trotzdem als normalen vollwertigen GPIO nutzen.
Stefan ⛄ F. schrieb: > Wo denn? Ich habe gerade zum 3. mal ins Datenblatt und ins > Referenzhandbuch geschaut und keine besonderen Hinweise zu PB9 gefunden. kannst du auch nicht, hatte noch ein zweites DaBla zu einem STM32L offen und bei dem war es so :) Trotzdem bleibt für mich das DaBla die Referenz, die Tabelle 5 ist jetzt nicht so unübersichtlich.
Johannes S. schrieb: > kannst du auch nicht, hatte noch ein zweites DaBla zu einem STM32L offen > und bei dem war es so :) Ach so. Kann passieren.
Zum Thema Programmiersprache. Bei dem Pascal könnt man auch mit AFIO_MAPR oder direkt RCC_APB2ENR oder direkt AFIOEN_bit und SWJ_CFG1_bit nehmen. falls noch jemand damit arbeitet
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.