/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _STM32F4XX_GPIO_H_ #define _STM32F4XX_GPIO_H_ #ifdef __cplusplus extern "C" { #endif #include #define GPIO_HANDLE_OFFSET 1 /* to make sure that 0 stays an invalid number */ #define GPIO_PORTA 0 #define GPIO_PORTB 1 #define GPIO_PORTC 2 #define GPIO_PORTD 3 #define GPIO_PORTE 4 #define GPIO_PORTF 5 #define GPIO_PORTG 6 #define GPIO_PORTH 7 #define GPIO_PORTI 8 #define GPIO_PORT_SHIFT 4 /* * This is a shorthand to specify a GPIO by port and number. * Use GPIO_PA(5) for the Nucleo green LED LD2. */ #define GPIO_PA(x) ((GPIO_PORTA << GPIO_PORT_SHIFT) + (x)) #define GPIO_PB(x) ((GPIO_PORTB << GPIO_PORT_SHIFT) + (x)) #define GPIO_PC(x) ((GPIO_PORTC << GPIO_PORT_SHIFT) + (x)) #define GPIO_PD(x) ((GPIO_PORTD << GPIO_PORT_SHIFT) + (x)) #define GPIO_PE(x) ((GPIO_PORTE << GPIO_PORT_SHIFT) + (x)) #define GPIO_PF(x) ((GPIO_PORTF << GPIO_PORT_SHIFT) + (x)) #define GPIO_PG(x) ((GPIO_PORTG << GPIO_PORT_SHIFT) + (x)) #define GPIO_PH(x) ((GPIO_PORTH << GPIO_PORT_SHIFT) + (x)) #define GPIO_PI(x) ((GPIO_PORTI << GPIO_PORT_SHIFT) + (x)) #define GPIO_PIN_MASK 0xf enum StmGpioAltFunc { GPIO_AF00 = 0, GPIO_AF01, GPIO_AF02, GPIO_AF03, GPIO_AF04, GPIO_AF05, GPIO_AF06, GPIO_AF07, GPIO_AF08, GPIO_AF09, GPIO_AF10, GPIO_AF11, GPIO_AF12, GPIO_AF13, GPIO_AF14, GPIO_AF15, GPIO_AF_SYS = GPIO_AF00, GPIO_AF_TIM1 = GPIO_AF01, GPIO_AF_TIM2 = GPIO_AF01, GPIO_AF_TIM3 = GPIO_AF02, GPIO_AF_TIM4 = GPIO_AF02, GPIO_AF_TIM5 = GPIO_AF02, GPIO_AF_TIM9 = GPIO_AF03, GPIO_AF_TIM10 = GPIO_AF03, GPIO_AF_TIM11 = GPIO_AF03, GPIO_AF_I2C1 = GPIO_AF04, GPIO_AF_I2C2_A = GPIO_AF04, GPIO_AF_I2C3_A = GPIO_AF04, GPIO_AF_SPI1 = GPIO_AF05, GPIO_AF_I2S1 = GPIO_AF05, GPIO_AF_SPI2_A = GPIO_AF05, GPIO_AF_I2S2_A = GPIO_AF05, GPIO_AF_SPI3_A = GPIO_AF05, GPIO_AF_I2S3_A = GPIO_AF05, GPIO_AF_SPI2_B = GPIO_AF06, GPIO_AF_I2S2_B = GPIO_AF06, GPIO_AF_SPI3_B = GPIO_AF06, GPIO_AF_I2S3_B = GPIO_AF06, GPIO_AF_SPI4_B = GPIO_AF06, GPIO_AF_I2S4_B = GPIO_AF06, GPIO_AF_SPI5_B = GPIO_AF06, GPIO_AF_I2S5_B = GPIO_AF06, GPIO_AF_SPI3_C = GPIO_AF07, GPIO_AF_I2S3_C = GPIO_AF07, GPIO_AF_USART1 = GPIO_AF07, GPIO_AF_USART2 = GPIO_AF07, GPIO_AF_USART6 = GPIO_AF08, GPIO_AF_I2C2_B = GPIO_AF09, GPIO_AF_I2C3_B = GPIO_AF09, GPIO_AF_OTG1 = GPIO_AF10, GPIO_AF_SDIO = GPIO_AF12, GPIO_AF_EVENT = GPIO_AF15, }; enum StmGpioSpeed /* CL (pF) 50, 50, 10, 10 */ { /* VDD (V) >= 2.7, 1.7, 2.7, 1.7 */ GPIO_SPEED_LOW = 0, /* Max (MHz) 4, 2, 8, 4 */ GPIO_SPEED_MEDIUM, /* 25, 12.5, 50, 20 */ GPIO_SPEED_FAST, /* 50, 25, 100, 50 */ GPIO_SPEED_HIGH, /* 100, 50, 180, 100 */ }; void gpioBitbangedUartOut(uint32_t chr); #ifdef __cplusplus } #endif #endif