From eb5f888ee2c59784a898eacd53108c15813241bd Mon Sep 17 00:00:00 2001 From: Eric Holland Date: Mon, 23 Nov 2015 13:43:25 -0800 Subject: [PATCH] GPIO definition and LED init --- platform/stm32f7xx/gpio.c | 14 ++++++- platform/stm32f7xx/include/platform/gpio.h | 4 ++ target/dartuinoP0/include/target/gpioconfig.h | 40 +++++++++++++++++++ target/dartuinoP0/init.c | 32 +++++++++++++++ 4 files changed, 88 insertions(+), 2 deletions(-) diff --git a/platform/stm32f7xx/gpio.c b/platform/stm32f7xx/gpio.c index bf90a50c..ac2a8a3e 100644 --- a/platform/stm32f7xx/gpio.c +++ b/platform/stm32f7xx/gpio.c @@ -29,7 +29,7 @@ static GPIO_TypeDef *port_to_pointer(unsigned int port) { - DEBUG_ASSERT(port <= GPIO_PORT_I); + DEBUG_ASSERT(port <= GPIO_PORT_K); switch (port) { default: @@ -51,12 +51,16 @@ static GPIO_TypeDef *port_to_pointer(unsigned int port) return GPIOH; case GPIO_PORT_I: return GPIOI; + case GPIO_PORT_J: + return GPIOJ; + case GPIO_PORT_K: + return GPIOK; } } static void enable_port(unsigned int port) { - DEBUG_ASSERT(port <= GPIO_PORT_I); + DEBUG_ASSERT(port <= GPIO_PORT_K); switch (port) { case GPIO_PORT_A: @@ -86,6 +90,12 @@ static void enable_port(unsigned int port) case GPIO_PORT_I: __HAL_RCC_GPIOI_CLK_ENABLE(); break; + case GPIO_PORT_J: + __HAL_RCC_GPIOJ_CLK_ENABLE(); + break; + case GPIO_PORT_K: + __HAL_RCC_GPIOK_CLK_ENABLE(); + break; } } diff --git a/platform/stm32f7xx/include/platform/gpio.h b/platform/stm32f7xx/include/platform/gpio.h index 0331dbe4..4de7b53a 100644 --- a/platform/stm32f7xx/include/platform/gpio.h +++ b/platform/stm32f7xx/include/platform/gpio.h @@ -11,6 +11,8 @@ /* gpio port/pin is packed into a single unsigned int in 16x:8port:8pin format */ #define GPIO(port, pin) ((unsigned int)(((port) << 8) | (pin))) +#define GPIO_TO_PIN_MASK(gpio) ((unsigned int)( 1 << ((gpio) & 0x0f))) + #define GPIO_PORT(gpio) (((gpio) >> 8) & 0xff) #define GPIO_PIN(gpio) ((gpio) & 0xff) #define GPIO_AFNUM(gpio) (((gpio) >> 24) & 0xf) @@ -24,6 +26,8 @@ #define GPIO_PORT_G 6 #define GPIO_PORT_H 7 #define GPIO_PORT_I 8 +#define GPIO_PORT_J 9 +#define GPIO_PORT_K 10 #endif diff --git a/target/dartuinoP0/include/target/gpioconfig.h b/target/dartuinoP0/include/target/gpioconfig.h index 6c2ed14b..c07bb5f0 100644 --- a/target/dartuinoP0/include/target/gpioconfig.h +++ b/target/dartuinoP0/include/target/gpioconfig.h @@ -25,7 +25,47 @@ #include +#define GPIO_LED_ON GPIO_PIN_RESET +#define GPIO_LED_OFF GPIO_PIN_SET + #define GPIO_USART3_TX GPIO(GPIO_PORT_B, 10) #define GPIO_USART3_RX GPIO(GPIO_PORT_B, 11) +#define GPIO_LED108 GPIO(GPIO_PORT_E, 3) +#define GPIO_LED109 GPIO(GPIO_PORT_E, 4) +#define GPIO_LED110 GPIO(GPIO_PORT_E, 5) +#define GPIO_LED111 GPIO(GPIO_PORT_E, 6) + +#define GPIO_LED112 GPIO(GPIO_PORT_D, 6) +#define GPIO_LED113 GPIO(GPIO_PORT_D, 7) +#define GPIO_LED114 GPIO(GPIO_PORT_J, 10) +#define GPIO_LED115 GPIO(GPIO_PORT_J, 11) + +#define GPIO_SHIELD_D0 GPIO(GPIO_PORT_B, 11) +#define GPIO_SHIELD_D1 GPIO(GPIO_PORT_B, 10) +#define GPIO_SHIELD_D2 GPIO(GPIO_PORT_E, 3) +#define GPIO_SHIELD_D3 GPIO(GPIO_PORT_E, 4) +#define GPIO_SHIELD_D4 GPIO(GPIO_PORT_E, 5) +#define GPIO_SHIELD_D5 GPIO(GPIO_PORT_E, 6) +#define GPIO_SHIELD_D6 GPIO(GPIO_PORT_D, 6) +#define GPIO_SHIELD_D7 GPIO(GPIO_PORT_D, 7) +#define GPIO_SHIELD_D8 GPIO(GPIO_PORT_J, 10) +#define GPIO_SHIELD_D9 GPIO(GPIO_PORT_J, 11) +#define GPIO_SHIELD_D10 GPIO(GPIO_PORT_J, 12) +#define GPIO_SHIELD_D11 GPIO(GPIO_PORT_J, 13) +#define GPIO_SHIELD_D12 GPIO(GPIO_PORT_J, 14) +#define GPIO_SHIELD_D13 GPIO(GPIO_PORT_J, 15) + +#define GPIO_SHIELD_ADC0 GPIO(GPIO_PORT_F, 6) +#define GPIO_SHIELD_ADC1 GPIO(GPIO_PORT_F, 10) +#define GPIO_SHIELD_ADC2 GPIO(GPIO_PORT_A, 3) +#define GPIO_SHIELD_ADC3 GPIO(GPIO_PORT_A, 5) +#define GPIO_SHIELD_ADC4 GPIO(GPIO_PORT_A, 6) +#define GPIO_SHIELD_ADC5 GPIO(GPIO_PORT_B, 0) + +#define GPIO_SW100 GPIO(GPIO_PORT_J, 12) +#define GPIO_SW101 GPIO(GPIO_PORT_J, 13) +#define GPIO_SW102 GPIO(GPIO_PORT_J, 14) +#define GPIO_SW103 GPIO(GPIO_PORT_J, 15) + #endif diff --git a/target/dartuinoP0/init.c b/target/dartuinoP0/init.c index af88d713..4f694164 100644 --- a/target/dartuinoP0/init.c +++ b/target/dartuinoP0/init.c @@ -54,6 +54,14 @@ const sdram_config_t target_sdram_config = { void target_early_init(void) { + + GPIO_InitTypeDef gpio_init_structure; + + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + __HAL_RCC_GPIOJ_CLK_ENABLE(); + + #if DEBUG_UART == 3 /* configure usart 3 pins */ gpio_config(GPIO_USART3_TX, GPIO_STM32_AF | GPIO_STM32_AFn(GPIO_AF7_USART3) | GPIO_PULLUP); @@ -62,6 +70,29 @@ void target_early_init(void) #error need to configure gpio pins for debug uart #endif + gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; + gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Speed = GPIO_SPEED_LOW; + + gpio_init_structure.Pin = GPIO_TO_PIN_MASK(GPIO_LED108) | GPIO_TO_PIN_MASK(GPIO_LED109) |\ + GPIO_TO_PIN_MASK(GPIO_LED110) | GPIO_TO_PIN_MASK(GPIO_LED111); + HAL_GPIO_Init(GPIOE, &gpio_init_structure); + + gpio_init_structure.Pin = GPIO_TO_PIN_MASK(GPIO_LED112) | GPIO_TO_PIN_MASK(GPIO_LED113); + HAL_GPIO_Init(GPIOD, &gpio_init_structure); + + gpio_init_structure.Pin = GPIO_TO_PIN_MASK(GPIO_LED114) | GPIO_TO_PIN_MASK(GPIO_LED115); + HAL_GPIO_Init(GPIOJ, &gpio_init_structure); + // Initialize to a pattern just so we know we have something + gpio_set(GPIO_LED108, GPIO_LED_ON); + gpio_set(GPIO_LED109, GPIO_LED_ON); + gpio_set(GPIO_LED110, GPIO_LED_ON); + gpio_set(GPIO_LED111, GPIO_LED_ON); + gpio_set(GPIO_LED112, GPIO_LED_ON); + gpio_set(GPIO_LED113, GPIO_LED_ON); + gpio_set(GPIO_LED114, GPIO_LED_ON); + gpio_set(GPIO_LED115, GPIO_LED_ON); + /* now that the uart gpios are configured, enable the debug uart */ stm32_debug_early_init(); @@ -83,6 +114,7 @@ static uint8_t* gen_mac_address(void) { void target_init(void) { + stm32_debug_init(); qspi_flash_init(N25Q128A_FLASH_SIZE);