Rahul Dahiya / Mbed OS STM32F7 Ethernet
Committer:
rahul_dahiya
Date:
Wed Jan 15 15:57:15 2020 +0530
Revision:
0:fb8047b156bb
STM32F7 LWIP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rahul_dahiya 0:fb8047b156bb 1 /* mbed Microcontroller Library
rahul_dahiya 0:fb8047b156bb 2 *******************************************************************************
rahul_dahiya 0:fb8047b156bb 3 * Copyright (c) 2016, STMicroelectronics
rahul_dahiya 0:fb8047b156bb 4 * All rights reserved.
rahul_dahiya 0:fb8047b156bb 5 *
rahul_dahiya 0:fb8047b156bb 6 * Redistribution and use in source and binary forms, with or without
rahul_dahiya 0:fb8047b156bb 7 * modification, are permitted provided that the following conditions are met:
rahul_dahiya 0:fb8047b156bb 8 *
rahul_dahiya 0:fb8047b156bb 9 * 1. Redistributions of source code must retain the above copyright notice,
rahul_dahiya 0:fb8047b156bb 10 * this list of conditions and the following disclaimer.
rahul_dahiya 0:fb8047b156bb 11 * 2. Redistributions in binary form must reproduce the above copyright notice,
rahul_dahiya 0:fb8047b156bb 12 * this list of conditions and the following disclaimer in the documentation
rahul_dahiya 0:fb8047b156bb 13 * and/or other materials provided with the distribution.
rahul_dahiya 0:fb8047b156bb 14 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rahul_dahiya 0:fb8047b156bb 15 * may be used to endorse or promote products derived from this software
rahul_dahiya 0:fb8047b156bb 16 * without specific prior written permission.
rahul_dahiya 0:fb8047b156bb 17 *
rahul_dahiya 0:fb8047b156bb 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rahul_dahiya 0:fb8047b156bb 19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rahul_dahiya 0:fb8047b156bb 20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rahul_dahiya 0:fb8047b156bb 21 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rahul_dahiya 0:fb8047b156bb 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rahul_dahiya 0:fb8047b156bb 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rahul_dahiya 0:fb8047b156bb 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rahul_dahiya 0:fb8047b156bb 25 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rahul_dahiya 0:fb8047b156bb 26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rahul_dahiya 0:fb8047b156bb 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rahul_dahiya 0:fb8047b156bb 28 *******************************************************************************
rahul_dahiya 0:fb8047b156bb 29 */
rahul_dahiya 0:fb8047b156bb 30 #ifndef MBED_GPIO_OBJECT_H
rahul_dahiya 0:fb8047b156bb 31 #define MBED_GPIO_OBJECT_H
rahul_dahiya 0:fb8047b156bb 32
rahul_dahiya 0:fb8047b156bb 33 #include "mbed_assert.h"
rahul_dahiya 0:fb8047b156bb 34 #include "cmsis.h"
rahul_dahiya 0:fb8047b156bb 35 #include "PortNames.h"
rahul_dahiya 0:fb8047b156bb 36 #include "PeripheralNames.h"
rahul_dahiya 0:fb8047b156bb 37 #include "PinNames.h"
rahul_dahiya 0:fb8047b156bb 38
rahul_dahiya 0:fb8047b156bb 39 #ifdef __cplusplus
rahul_dahiya 0:fb8047b156bb 40 extern "C" {
rahul_dahiya 0:fb8047b156bb 41 #endif
rahul_dahiya 0:fb8047b156bb 42
rahul_dahiya 0:fb8047b156bb 43 /*
rahul_dahiya 0:fb8047b156bb 44 * Note: reg_clr might actually be same as reg_set.
rahul_dahiya 0:fb8047b156bb 45 * Depends on family whether BRR is available on top of BSRR
rahul_dahiya 0:fb8047b156bb 46 * if BRR does not exist, family shall define GPIO_IP_WITHOUT_BRR
rahul_dahiya 0:fb8047b156bb 47 */
rahul_dahiya 0:fb8047b156bb 48 typedef struct {
rahul_dahiya 0:fb8047b156bb 49 uint32_t mask;
rahul_dahiya 0:fb8047b156bb 50 __IO uint32_t *reg_in;
rahul_dahiya 0:fb8047b156bb 51 __IO uint32_t *reg_set;
rahul_dahiya 0:fb8047b156bb 52 __IO uint32_t *reg_clr;
rahul_dahiya 0:fb8047b156bb 53 PinName pin;
rahul_dahiya 0:fb8047b156bb 54 GPIO_TypeDef *gpio;
rahul_dahiya 0:fb8047b156bb 55 uint32_t ll_pin;
rahul_dahiya 0:fb8047b156bb 56 } gpio_t;
rahul_dahiya 0:fb8047b156bb 57
rahul_dahiya 0:fb8047b156bb 58 static inline void gpio_write(gpio_t *obj, int value)
rahul_dahiya 0:fb8047b156bb 59 {
rahul_dahiya 0:fb8047b156bb 60 if (value) {
rahul_dahiya 0:fb8047b156bb 61 *obj->reg_set = obj->mask;
rahul_dahiya 0:fb8047b156bb 62 } else {
rahul_dahiya 0:fb8047b156bb 63 #ifdef GPIO_IP_WITHOUT_BRR
rahul_dahiya 0:fb8047b156bb 64 *obj->reg_clr = obj->mask << 16;
rahul_dahiya 0:fb8047b156bb 65 #else
rahul_dahiya 0:fb8047b156bb 66 *obj->reg_clr = obj->mask;
rahul_dahiya 0:fb8047b156bb 67 #endif
rahul_dahiya 0:fb8047b156bb 68 }
rahul_dahiya 0:fb8047b156bb 69 }
rahul_dahiya 0:fb8047b156bb 70
rahul_dahiya 0:fb8047b156bb 71 static inline int gpio_read(gpio_t *obj)
rahul_dahiya 0:fb8047b156bb 72 {
rahul_dahiya 0:fb8047b156bb 73 return ((*obj->reg_in & obj->mask) ? 1 : 0);
rahul_dahiya 0:fb8047b156bb 74 }
rahul_dahiya 0:fb8047b156bb 75
rahul_dahiya 0:fb8047b156bb 76 static inline int gpio_is_connected(const gpio_t *obj)
rahul_dahiya 0:fb8047b156bb 77 {
rahul_dahiya 0:fb8047b156bb 78 return obj->pin != (PinName)NC;
rahul_dahiya 0:fb8047b156bb 79 }
rahul_dahiya 0:fb8047b156bb 80
rahul_dahiya 0:fb8047b156bb 81
rahul_dahiya 0:fb8047b156bb 82 #ifdef __cplusplus
rahul_dahiya 0:fb8047b156bb 83 }
rahul_dahiya 0:fb8047b156bb 84 #endif
rahul_dahiya 0:fb8047b156bb 85
rahul_dahiya 0:fb8047b156bb 86 #endif