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!
...schau mal, was für diese pins als default funktion gilt (wahrscheinlich jtag/swd ;o), du musst die alternate I/O funtionen (in dem fall gpio) per SW aktivieren. gutt lack, tom.
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.
Ein Fehler meinerseits - auch PB4 funktioniert nicht
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;
...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.
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
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.
...nimmd dir eins der vielen vielen beispielprojekte
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 ...^^
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.