diff --git a/examples/GPIO/wiring.c b/examples/GPIO/wiring.c index ce706a3f257aa41496036d72ce41ba00bd1b59f9..e0acde1977e48cc74ac45f7b33c123d25e028758 100644 --- a/examples/GPIO/wiring.c +++ b/examples/GPIO/wiring.c @@ -41,23 +41,10 @@ void portEnable(enum GPIOports port) { void pinMode(enum GPIOpins pin, enum GPIOpinMode mode) { GPIO_TypeDef * GPIOx; - uint16_t PinOffset = 4; - - if (pin <= pin_A2) { - GPIOx = GPIOA; - PinOffset *= pin; - } - else if (pin <= pin_C7) { - GPIOx = GPIOC; - PinOffset *= (pin - 2); - } - else if (pin <= pin_D7) { - GPIOx = GPIOD; - PinOffset *= (pin - 10); - } - else { - return; - } + uint16_t PinOffset; + + GPIOx = GPIOA+(pin>>3); + PinOffset = (pin & 0x7)<<2; GPIOx->CFGLR &= ~(0b1111<<PinOffset); // zero the 4 configuration bits @@ -116,11 +103,11 @@ void digitalWrite(enum GPIOpins pin, uint8_t value) { } else if (pin <= pin_C7) { GPIOx = GPIOC; - PinOffset = (pin - 2); + PinOffset = (pin - 16); } else if (pin <= pin_D7) { GPIOx = GPIOD; - PinOffset = (pin - 10); + PinOffset = (pin - 24); } else { return; @@ -146,11 +133,11 @@ uint8_t digitalRead(uint8_t pin) { } else if (pin <= pin_C7) { GPIOx = GPIOC; - PinOffset = (pin - 2); + PinOffset = (pin - 16); } else if (pin <= pin_D7) { GPIOx = GPIOD; - PinOffset = (pin - 10); + PinOffset = (pin - 24); } else { return 0; diff --git a/examples/GPIO/wiring.h b/examples/GPIO/wiring.h index c54f9fbbd72b19357ddece62eb3981913614a7b2..3b7d0d74e0a1a8f1d41fca115b4aaeb3901cc8e2 100644 --- a/examples/GPIO/wiring.h +++ b/examples/GPIO/wiring.h @@ -20,9 +20,9 @@ enum GPIOports{ }; enum GPIOpins{ - pin_A1, + pin_A1 = 1, pin_A2, - pin_C0, + pin_C0 = 16, pin_C1, pin_C2, pin_C3, @@ -30,7 +30,7 @@ enum GPIOpins{ pin_C5, pin_C6, pin_C7, - pin_D0, + pin_D0 = 24, pin_D1, pin_D2, pin_D3, diff --git a/examples/GPIO_analogRead/wiring.c b/examples/GPIO_analogRead/wiring.c index ce706a3f257aa41496036d72ce41ba00bd1b59f9..e0acde1977e48cc74ac45f7b33c123d25e028758 100644 --- a/examples/GPIO_analogRead/wiring.c +++ b/examples/GPIO_analogRead/wiring.c @@ -41,23 +41,10 @@ void portEnable(enum GPIOports port) { void pinMode(enum GPIOpins pin, enum GPIOpinMode mode) { GPIO_TypeDef * GPIOx; - uint16_t PinOffset = 4; - - if (pin <= pin_A2) { - GPIOx = GPIOA; - PinOffset *= pin; - } - else if (pin <= pin_C7) { - GPIOx = GPIOC; - PinOffset *= (pin - 2); - } - else if (pin <= pin_D7) { - GPIOx = GPIOD; - PinOffset *= (pin - 10); - } - else { - return; - } + uint16_t PinOffset; + + GPIOx = GPIOA+(pin>>3); + PinOffset = (pin & 0x7)<<2; GPIOx->CFGLR &= ~(0b1111<<PinOffset); // zero the 4 configuration bits @@ -116,11 +103,11 @@ void digitalWrite(enum GPIOpins pin, uint8_t value) { } else if (pin <= pin_C7) { GPIOx = GPIOC; - PinOffset = (pin - 2); + PinOffset = (pin - 16); } else if (pin <= pin_D7) { GPIOx = GPIOD; - PinOffset = (pin - 10); + PinOffset = (pin - 24); } else { return; @@ -146,11 +133,11 @@ uint8_t digitalRead(uint8_t pin) { } else if (pin <= pin_C7) { GPIOx = GPIOC; - PinOffset = (pin - 2); + PinOffset = (pin - 16); } else if (pin <= pin_D7) { GPIOx = GPIOD; - PinOffset = (pin - 10); + PinOffset = (pin - 24); } else { return 0; diff --git a/examples/GPIO_analogRead/wiring.h b/examples/GPIO_analogRead/wiring.h index c54f9fbbd72b19357ddece62eb3981913614a7b2..3b7d0d74e0a1a8f1d41fca115b4aaeb3901cc8e2 100644 --- a/examples/GPIO_analogRead/wiring.h +++ b/examples/GPIO_analogRead/wiring.h @@ -20,9 +20,9 @@ enum GPIOports{ }; enum GPIOpins{ - pin_A1, + pin_A1 = 1, pin_A2, - pin_C0, + pin_C0 = 16, pin_C1, pin_C2, pin_C3, @@ -30,7 +30,7 @@ enum GPIOpins{ pin_C5, pin_C6, pin_C7, - pin_D0, + pin_D0 = 24, pin_D1, pin_D2, pin_D3,