I made a few extra macros in my board.h which in my opinion make it easier to configure IO pins.
Example of pin configuration:
Code: Select all
#define GPIOA_PINS(X) \
X(GPIOA, 0, SENS3 , ANALOG , LOW , PUSHPULL , 50M , FLOATING , 0) \
X(GPIOA, 1, SENS2 , ANALOG , LOW , PUSHPULL , 50M , FLOATING , 0) \
X(GPIOA, 2, SENS1 , ANALOG , LOW , PUSHPULL , 50M , FLOATING , 0) \
X(GPIOA, 3, ADC_TEMP , ANALOG , LOW , PUSHPULL , 50M , FLOATING , 0) \
X(GPIOA, 4, SPI1_CS , OUTPUT , HIGH, PUSHPULL , 50M , PULLUP , 0) \
X(GPIOA, 5, SPI1_SCK , ALTERNATE , LOW , PUSHPULL , 50M , PULLUP , 5) \
X(GPIOA, 6, SPI1_MISO , ALTERNATE , LOW , PUSHPULL , 50M , PULLUP , 5) \
...
This way all the information about each pin is on a single row. It also automatically defines names like GPIOA_SPI1_CS for use in palWritePad().
Full code is available here:
https://github.com/PetteriAimonen/ebike ... rc/board.h
If someone finds this useful, feel free to copy the macros.