#ifndef _PINS_H_ #define _PINS_H_ /* st seem to change these with every chip revision */ #define MAP_AF(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, a ); \ } while (0) /* STM32F1 doesn't have AF pull up, but also doesn't disconnect af inputs so just use regular pull up */ #define MAP_AF_PU(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, a); \ gpio_set( a ## _PORT, a); \ } while (0) #define MAP_AF_OD(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_OPENDRAIN, a ); \ } while (0) #define MAP_OUTPUT_PP(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, a ); \ } while (0) #define MAP_OUTPUT_OD(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, a ); \ } while (0) #define MAP_OUTPUT_OD_SLOW(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_OUTPUT_2_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, a ); \ } while (0) /* STM32F1 madly uses the output register to drive the other end of the resistor, so pull up */ /* requires us to write a 1 there */ #define MAP_INPUT_PU(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, a); \ gpio_set( a ## _PORT, a); \ } while (0) #define MAP_INPUT(a) do { \ gpio_set_mode( a ## _PORT, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, a); \ } while (0) #define CLEAR(a) gpio_clear( a ## _PORT, a) #define SET(a) gpio_set( a ## _PORT, a) #define GET(a) gpio_get( a ## _PORT, a) #endif