From ed2b9f1f63fcf9d8b6289ef8df6cef533f106171 Mon Sep 17 00:00:00 2001 From: James Cotton Date: Wed, 30 May 2012 10:12:40 -0500 Subject: [PATCH] Make PIOS_LED init it's GPIO clocks so it doesn't rely on startup code --- flight/PiOS/STM32F4xx/pios_led.c | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/flight/PiOS/STM32F4xx/pios_led.c b/flight/PiOS/STM32F4xx/pios_led.c index c73d37198..949ad3717 100644 --- a/flight/PiOS/STM32F4xx/pios_led.c +++ b/flight/PiOS/STM32F4xx/pios_led.c @@ -50,6 +50,40 @@ int32_t PIOS_LED_Init(const struct pios_led_cfg * cfg) for (uint8_t i = 0; i < cfg->num_leds; i++) { const struct pios_led * led = &(cfg->leds[i]); + /* Enable the peripheral clock for the GPIO */ + switch ((uint32_t)led->pin.gpio) { + case (uint32_t) GPIOA: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); + break; + case (uint32_t) GPIOB: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); + break; + case (uint32_t) GPIOC: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); + break; + case (uint32_t) GPIOD: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); + break; + case (uint32_t) GPIOE: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); + break; + case (uint32_t) GPIOF: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); + break; + case (uint32_t) GPIOG: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); + break; + case (uint32_t) GPIOH: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH, ENABLE); + break; + case (uint32_t) GPIOI: + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI, ENABLE); + break; + default: + PIOS_Assert(0); + break; + } + if (led->remap) { GPIO_PinAFConfig(led->pin.gpio, led->pin.init.GPIO_Pin, led->remap); }