STM32 Address Pointer
Addressrechner... In dem SMT32 Insider's Guide (die pdf scheint nicht mehr zum Download zu stehen) wird eine nette Möglichkeit erwähnt, einen GPIO Pin relativ direkt anzusteuern.
Dazu kann man sich einen Pointer errechnen, welcher direkt auf das entsprechende Bit im Register zielt. Die dazugehörigen Register findet man im RM0008 Reference manual.Ich hab hier mal einen kleinen Rechner gebastelt, mit dem man sich die einzelnen Pins der Ports einfach zusammenstellen kann. Oder man sucht sich selbst die entsprechenden Daten:
Boundary address auf S.44-46
Startadresse aus der Memory Map: 0x40010800 - 0x40010BFF für GPIO Port A
Damit sind Anfang und Ende eines Registerblocks gemeint.
Offset
Der Offset von der Startadresse. Damit wird das eigentliche Register angewählt.
Bit
Das gewollte Bit aus dem Register. Da es 32bit Register sind, kann das Bit 0-31 (0x00-0x1F) sein.
32bit Umrechner...Dieser Konverter ist hilfreich, wenn es um die Beschaltung von 32Bit Registern geht.
Im Datenblatt das entsprechende Bit raussuchen und hier als Häkchen setzen. Wenn der Mauszeiger auf einem Häkchen "parkt", wird das dazugehörige Bit angezeigt. Alternativ kann auch der Hex Wert oder eine Rechenformel benutzt werden.
Software Reset
Hier ist auch ein anderer Register Pointer, den ich für nützlich halte. Damit kann man den µC in den Neustart schicken.
Funktionierte bei meinem STM32F103, andere varianten benötigen warscheinlich einen andere Addresse.
#define RESET() (*((unsigned long *) 0x0E000ED0C)) = 0x05FA0004; while(1); //Software Reset