STM32 JTAG pins als GPIO funktionieren nicht

Gast #2944150
Lesenswert?
• ▲
▼
Hi,

Ich arbeite gerade mit einem STM32F103C8T6, und versuche den PB3 als 
GPIO zu verwenden. Ich habe JTAT & SW  deaktiviert, allerdings 
funktioniert nur PB4 als output, PB3 nicht.

Hier mein code:

RCC->APB2ENR |=(1<<3);         /* Enable GPIOB clock                 */
RCC->APB2ENR |=1;              /* Enable AFIO clock                  */

  //disable JTAG ->
  AFIO->MAPR |= (1<<26);

  // set GPIOBL
  GPIOB->CRL = 0x333AA333;

was mache ich falsch?

Danke für eure Hilfe!
Gast #2944850
Lesenswert?
• ▲
▼
Hi Tom,

Danke für deine Hilfe. Ich dachte mit

AFIO->MAPR |= (1<<26);

wird das JTAG interface abgeschalten, und somit für GPIOs zugägnlich?

und mit
GPIOB->CRL = 0x333AA333;

setze ich PB3 und PB4 als alternate port function push/pull

das sollte so doch stimmen oder?

Un dwie gesagt, PB4 funktioniert eindwanfrei, nur PB3 eben nicht.
(Firma: TU Darmstadt) #2945261
Lesenswert?
• ▲
▼
Für AFIO Bits 26:24 steht:
These bits are write-only (when read, the value is undefined
Damit ist
AFIO->MAPR |= (1<<26);
nicht so besonders schlau.

Probier mal
uint32 x = AFIO->MAPR;
x &= ~AFIO_MAPR_SWJ_CF;
x |=  AFIO_MAPR_SWJ_CFG_DISABLE;
AFIO->MAPR = x;
Gast #2945393
Lesenswert?
• ▲
▼
...probier es doch mal mit der FW-LIB von ST und schau was wie gesetzt 
werden muss registermässig.

das alternate pin mapping ist meines Erachtens nach in diesem fall nicht 
nötig, du musst lediglich für dieses portpin die alternate function 
anstelle der default auswählen, in dem fall die gpio pin funktion.

btw, Jtag UND SWD zu deaktivieren ist doch etwas unblickig, oder ?

du solltest erstmal SWD aktiv lassen und dich mit der konfiguration des 
SWO pins PB3 als gpio versuchen, der debugger braucht nur SWD und 
SWCLK...

gutt lack, tom.
#2945496
Lesenswert?
• ▲
▼
Hallo!
Da ich das selbe Problem hier schon hatte, kann ich sagen dass das hier 
bei mir funktioniert hat:
1
  //DISABLE JTAG, Enable SWD
2
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
3
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // Disable JTAG/SWD so pins are available
du brauchst, soweit ich weiß, GPIOB, AFIO und dann das Remap
Gast #2945868
Lesenswert?
• ▲
▼
Hi,

danke für eure Tips.

Für AFIO Bits 26:24 steht:
These bits are write-only (when read, the value is undefined
Damit ist
AFIO->MAPR |= (1<<26);
nicht so besonders schlau.


danke, den fehler hab ich bis jetzt konsequent ignoriert ;)
Ich hab allerdings auch schon AFIO->MAPR = 0x04000000; versucht - ohne 
Erfolg.

JTAG und swd benutze ich nicht - daher kein problem die zu deaktivieren.
hat jemand von euch die ST lib in Keil schonmal verwendet?
Wie kann ich die am besten einbinden? SIeht ja so aus als müsste ich 
alle headerfiles separat reinklopfen, um auf alle Funktionen zugreifen 
zu können.
Danke nochmal für Eure Hilfe.
Persönliche Seite #4937955
Lesenswert?
• ▲
▼
Phantomix X. schrieb:
> //DISABLE JTAG, Enable SWD
>   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
> RCC_APB2Periph_AFIO, ENABLE);
>   GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // Disable
> JTAG/SWD so pins are available

Ist zwar schon ein paar Jahre alt, aber hat bei mir auch geholfen ;-)

Bin gespannt, ob noch mehr solche Überraschungen auftauchen ...^^

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.