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,