Replacement for regular GPIO (DigitalIn, DigitalOut, DigitalInOut) classes which has superior speed. (modified for use opendrain in stm32)

Dependents:   hctl2032_encoder

Fork of FastIO by Erik -

Revision:
9:6e0f24f71081
Parent:
7:1e784ae11fba
--- a/Devices/FastIO_NUCLEO_F401.h	Tue Aug 12 07:15:20 2014 +0000
+++ b/Devices/FastIO_NUCLEO_F401.h	Fri Sep 05 04:48:50 2014 +0000
@@ -16,6 +16,32 @@
 #define SET_DIR_INPUT       (PORT->MODER &= ~(GPIO_MODER_MODER0_0 << (STM_PIN(pin) * 2)))
 #define SET_DIR_OUTPUT      (PORT->MODER |= (GPIO_MODER_MODER0_0 << (STM_PIN(pin) * 2)))
 #define SET_MODE(pull)      pin_mode(pin, pull);
+#define SET_FUNCTION        pin_function(pin, STM_PIN_DATA(2, GPIO_NOPULL, GPIO_AF10_OTG_FS));
+
+//pin_function(PA_10, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP));
+//void pin_function(PinName pin, int data) {
+//    MBED_ASSERT(pin != (PinName)NC);
+//    // Get the pin informations
+//    uint32_t mode  = STM_PIN_MODE(data);
+//    uint32_t pupd  = STM_PIN_PUPD(data);
+//    uint32_t afnum = STM_PIN_AFNUM(data);
+
+//    uint32_t port_index = STM_PORT(pin);
+//    uint32_t pin_index  = STM_PIN(pin);
+
+    // Enable GPIO clock
+//    uint32_t gpio_add = Set_GPIO_Clock(port_index);
+//    GPIO_TypeDef *gpio = (GPIO_TypeDef *)gpio_add;
+
+    // Configure GPIO
+//    GPIO_InitTypeDef GPIO_InitStructure;
+//   GPIO_InitStructure.Pin       = (uint32_t)(1 << pin_index);
+//    GPIO_InitStructure.Mode      = gpio_mode[mode];
+//    GPIO_InitStructure.Pull      = pupd;
+//    GPIO_InitStructure.Speed     = GPIO_SPEED_HIGH;
+//    GPIO_InitStructure.Alternate = afnum;
+//    HAL_GPIO_Init(gpio, &GPIO_InitStructure);
+
 
 #define WRITE_PIN_SET       (PORT->BSRRL = PINMASK)
 #define WRITE_PIN_CLR       (PORT->BSRRH = PINMASK)
@@ -23,3 +49,4 @@
 #define READ_PIN            ((PORT->IDR & container.mask) ? 1 : 0)
 
 #endif
+