diff --git a/baseflight.uvproj b/baseflight.uvproj index a6d0cd2ceb..67f38c2955 100755 --- a/baseflight.uvproj +++ b/baseflight.uvproj @@ -797,11 +797,6 @@ 1 .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - - stm32f10x_gpio.c - 1 - .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c - stm32f10x_flash.c 1 @@ -1601,11 +1596,6 @@ 1 .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - - stm32f10x_gpio.c - 1 - .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c - stm32f10x_flash.c 1 @@ -2708,11 +2698,6 @@ 1 .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_usart.c - - stm32f10x_gpio.c - 1 - .\lib\STM32F10x_StdPeriph_Driver\src\stm32f10x_gpio.c - stm32f10x_flash.c 1 diff --git a/src/drv_bmp085.c b/src/drv_bmp085.c index b2ff7b522b..2fd7a45a22 100755 --- a/src/drv_bmp085.c +++ b/src/drv_bmp085.c @@ -115,7 +115,7 @@ bool bmp085Detect(baro_t *baro) #endif // EXTI interrupt for barometer EOC - GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource14); + gpioExtiLineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource14); EXTI_InitStructure.EXTI_Line = EXTI_Line14; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; diff --git a/src/drv_gpio.c b/src/drv_gpio.c index 248c1663df..91021f2d72 100644 --- a/src/drv_gpio.c +++ b/src/drv_gpio.c @@ -31,3 +31,12 @@ void gpioInit(GPIO_TypeDef *gpio, gpio_config_t *config) } } } + +void gpioExtiLineConfig(uint8_t portsrc, uint8_t pinsrc) +{ + uint32_t tmp = 0x00; + + tmp = ((uint32_t)0x0F) << (0x04 * (pinsrc & (uint8_t)0x03)); + AFIO->EXTICR[pinsrc >> 0x02] &= ~tmp; + AFIO->EXTICR[pinsrc >> 0x02] |= (((uint32_t)portsrc) << (0x04 * (pinsrc & (uint8_t)0x03))); +} diff --git a/src/drv_gpio.h b/src/drv_gpio.h index ff695ae6a8..ec0a9f5a17 100644 --- a/src/drv_gpio.h +++ b/src/drv_gpio.h @@ -53,3 +53,4 @@ typedef struct #define digitalIn(p, i) (p->IDR & i) void gpioInit(GPIO_TypeDef *gpio, gpio_config_t *config); +void gpioExtiLineConfig(uint8_t portsrc, uint8_t pinsrc); diff --git a/src/drv_hcsr04.c b/src/drv_hcsr04.c index 515f2cf56c..1bc426f529 100644 --- a/src/drv_hcsr04.c +++ b/src/drv_hcsr04.c @@ -90,7 +90,7 @@ void hcsr04_init(sonar_config_t config) gpioInit(GPIOB, &gpio); // setup external interrupt on echo pin - GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, exti_pin_source); + gpioExtiLineConfig(GPIO_PortSourceGPIOB, exti_pin_source); EXTI_ClearITPendingBit(exti_line);