diff --git a/examples/GPIO/wiring.c b/examples/GPIO/wiring.c index b8a71d386d41157970121845b7629d7b58a142f6..f852cd067b17ea88dbc502270505dc9ddb94d766 100644 --- a/examples/GPIO/wiring.c +++ b/examples/GPIO/wiring.c @@ -46,27 +46,10 @@ void portEnable(enum GPIOports port) { void pinMode(enum GPIOpins pin, enum GPIOpinMode mode) { GPIO_TypeDef * GPIOx; - uint16_t PinOffset = 0; + uint16_t PinOffset; - if (pin <= pin_A7) { - GPIOx = GPIOA; - PinOffset = pin << 2; - } - else if (pin <= pin_B7) { /* GPIOB doesn't actually exist (yet?) - GPIOx = GPIOB; - PinOffset = (pin-8) << 2; */ - } - else if (pin <= pin_C7) { - GPIOx = GPIOC; - PinOffset = (pin - 16) << 2; - } - else if (pin <= pin_D7) { - GPIOx = GPIOD; - PinOffset = (pin - 24) << 2; - } - else { - return; - } + GPIOx = GPIOA+(pin>>3); + PinOffset = (pin & 0x7)<<2; GPIOx->CFGLR &= ~(0b1111<<PinOffset); // zero the 4 configuration bits