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.
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.
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.
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 ...^^