static void pins_init(void) { /* Pin usage: * PA0 (OUT - OD GPIO) : Wakeup on Vnc / Threshold * PA1 (ANALOG - ADC_IN1) : CC sense * PA2 (ANALOG - ADC_IN2) : Current sense * PA3 (ANALOG - ADC_IN3) : Voltage sense * PA4 (OUT - OD GPIO) : PD TX enable * PA5 (AF0 - SPI1_SCK) : TX clock in * PA6 (AF0 - SPI1_MISO) : PD TX * PA7 (AF5 - TIM3_CH2) : PD RX * PA9 (AF1 - UART1_TX) : [DEBUG] UART TX * PA10 (AF1 - UART1_RX) : [DEBUG] UART RX * PA13 (OUT - GPIO) : voltage select[0] * PA14 (OUT - GPIO) : voltage select[1] * PB1 (AF0 - TIM14_CH1) : TX clock out * PF0 (OUT - GPIO) : LM5050 FET driver off * PF1 (OUT - GPIO) : discharge FET */ STM32_GPIO_ODR(GPIO_A) = /* HIGH(0) | */ HIGH(4); STM32_GPIO_AFRL(GPIO_A) = AFx(7, 1); STM32_GPIO_AFRH(GPIO_A) = AFx(9, 1) | AFx(10, 1); STM32_GPIO_OTYPER(GPIO_A) = ODR(0) | ODR(4); STM32_GPIO_OSPEEDR(GPIO_A) = HISPEED(5) | HISPEED(6) | HISPEED(7); STM32_GPIO_MODER(GPIO_A) = OUT(0) | ANALOG(1) | ANALOG(2) | ANALOG(3) | OUT(4) | AF(5) /*| AF(6)*/ | AF(7) | AF(9) | AF(10) | OUT(13) | OUT(14); /* set PF0 / PF1 as output */ STM32_GPIO_ODR(GPIO_F) = 0; STM32_GPIO_MODER(GPIO_F) = OUT(0) | OUT(1); STM32_GPIO_OTYPER(GPIO_F) = 0; /* Set PB1 as AF0 (TIM14_CH1) */ STM32_GPIO_OSPEEDR(GPIO_B) = HISPEED(1); STM32_GPIO_MODER(GPIO_B) = AF(1); }
static inline int output_is_enabled(void) { /* GPF0 = enable output FET */ return STM32_GPIO_ODR(GPIO_F) & 1; }
static inline int discharge_is_enabled(void) { /* GPF1 = enable discharge FET */ return STM32_GPIO_ODR(GPIO_F) & 2; }