The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*
AnnaBridge 171:3a7713b1edbc 2 * The Clear BSD License
AnnaBridge 171:3a7713b1edbc 3 * Copyright (c) 2016, Freescale Semiconductor, Inc.
AnnaBridge 171:3a7713b1edbc 4 * Copyright 2016-2017 NXP
AnnaBridge 171:3a7713b1edbc 5 * All rights reserved.
AnnaBridge 171:3a7713b1edbc 6 *
AnnaBridge 171:3a7713b1edbc 7 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 171:3a7713b1edbc 8 * are permitted (subject to the limitations in the disclaimer below) provided
AnnaBridge 171:3a7713b1edbc 9 * that the following conditions are met:
AnnaBridge 171:3a7713b1edbc 10 *
AnnaBridge 171:3a7713b1edbc 11 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 171:3a7713b1edbc 12 * of conditions and the following disclaimer.
AnnaBridge 171:3a7713b1edbc 13 *
AnnaBridge 171:3a7713b1edbc 14 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 171:3a7713b1edbc 15 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 171:3a7713b1edbc 16 * other materials provided with the distribution.
AnnaBridge 171:3a7713b1edbc 17 *
AnnaBridge 171:3a7713b1edbc 18 * o Neither the name of the copyright holder nor the names of its
AnnaBridge 171:3a7713b1edbc 19 * contributors may be used to endorse or promote products derived from this
AnnaBridge 171:3a7713b1edbc 20 * software without specific prior written permission.
AnnaBridge 171:3a7713b1edbc 21 *
AnnaBridge 171:3a7713b1edbc 22 * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
AnnaBridge 171:3a7713b1edbc 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 171:3a7713b1edbc 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 171:3a7713b1edbc 25 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 171:3a7713b1edbc 26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 171:3a7713b1edbc 27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 171:3a7713b1edbc 28 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 171:3a7713b1edbc 29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 171:3a7713b1edbc 30 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 171:3a7713b1edbc 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 171:3a7713b1edbc 32 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 171:3a7713b1edbc 33 */
AnnaBridge 171:3a7713b1edbc 34
AnnaBridge 171:3a7713b1edbc 35 #ifndef _LPC_GPIO_H_
AnnaBridge 171:3a7713b1edbc 36 #define _LPC_GPIO_H_
AnnaBridge 171:3a7713b1edbc 37
AnnaBridge 171:3a7713b1edbc 38 #include "fsl_common.h"
AnnaBridge 171:3a7713b1edbc 39
AnnaBridge 171:3a7713b1edbc 40 /*!
AnnaBridge 171:3a7713b1edbc 41 * @addtogroup lpc_gpio
AnnaBridge 171:3a7713b1edbc 42 * @{
AnnaBridge 171:3a7713b1edbc 43 */
AnnaBridge 171:3a7713b1edbc 44
AnnaBridge 171:3a7713b1edbc 45 /*! @file */
AnnaBridge 171:3a7713b1edbc 46
AnnaBridge 171:3a7713b1edbc 47 /*******************************************************************************
AnnaBridge 171:3a7713b1edbc 48 * Definitions
AnnaBridge 171:3a7713b1edbc 49 ******************************************************************************/
AnnaBridge 171:3a7713b1edbc 50
AnnaBridge 171:3a7713b1edbc 51 /*! @name Driver version */
AnnaBridge 171:3a7713b1edbc 52 /*@{*/
AnnaBridge 171:3a7713b1edbc 53 /*! @brief LPC GPIO driver version 2.1.1. */
AnnaBridge 171:3a7713b1edbc 54 #define FSL_GPIO_DRIVER_VERSION (MAKE_VERSION(2, 1, 1))
AnnaBridge 171:3a7713b1edbc 55 /*@}*/
AnnaBridge 171:3a7713b1edbc 56
AnnaBridge 171:3a7713b1edbc 57 /*! @brief LPC GPIO direction definition */
AnnaBridge 171:3a7713b1edbc 58 typedef enum _gpio_pin_direction
AnnaBridge 171:3a7713b1edbc 59 {
AnnaBridge 171:3a7713b1edbc 60 kGPIO_DigitalInput = 0U, /*!< Set current pin as digital input*/
AnnaBridge 171:3a7713b1edbc 61 kGPIO_DigitalOutput = 1U, /*!< Set current pin as digital output*/
AnnaBridge 171:3a7713b1edbc 62 } gpio_pin_direction_t;
AnnaBridge 171:3a7713b1edbc 63
AnnaBridge 171:3a7713b1edbc 64 /*!
AnnaBridge 171:3a7713b1edbc 65 * @brief The GPIO pin configuration structure.
AnnaBridge 171:3a7713b1edbc 66 *
AnnaBridge 171:3a7713b1edbc 67 * Every pin can only be configured as either output pin or input pin at a time.
AnnaBridge 171:3a7713b1edbc 68 * If configured as a input pin, then leave the outputConfig unused.
AnnaBridge 171:3a7713b1edbc 69 */
AnnaBridge 171:3a7713b1edbc 70 typedef struct _gpio_pin_config
AnnaBridge 171:3a7713b1edbc 71 {
AnnaBridge 171:3a7713b1edbc 72 gpio_pin_direction_t pinDirection; /*!< GPIO direction, input or output */
AnnaBridge 171:3a7713b1edbc 73 /* Output configurations, please ignore if configured as a input one */
AnnaBridge 171:3a7713b1edbc 74 uint8_t outputLogic; /*!< Set default output logic, no use in input */
AnnaBridge 171:3a7713b1edbc 75 } gpio_pin_config_t;
AnnaBridge 171:3a7713b1edbc 76
AnnaBridge 171:3a7713b1edbc 77 /*******************************************************************************
AnnaBridge 171:3a7713b1edbc 78 * API
AnnaBridge 171:3a7713b1edbc 79 ******************************************************************************/
AnnaBridge 171:3a7713b1edbc 80 #if defined(__cplusplus)
AnnaBridge 171:3a7713b1edbc 81 extern "C" {
AnnaBridge 171:3a7713b1edbc 82 #endif
AnnaBridge 171:3a7713b1edbc 83
AnnaBridge 171:3a7713b1edbc 84 /*! @name GPIO Configuration */
AnnaBridge 171:3a7713b1edbc 85 /*@{*/
AnnaBridge 171:3a7713b1edbc 86
AnnaBridge 171:3a7713b1edbc 87 /*!
AnnaBridge 171:3a7713b1edbc 88 * @brief Initializes the GPIO peripheral.
AnnaBridge 171:3a7713b1edbc 89 *
AnnaBridge 171:3a7713b1edbc 90 * This function ungates the GPIO clock.
AnnaBridge 171:3a7713b1edbc 91 *
AnnaBridge 171:3a7713b1edbc 92 * @param base GPIO peripheral base pointer.
AnnaBridge 171:3a7713b1edbc 93 * @param port GPIO port number.
AnnaBridge 171:3a7713b1edbc 94 */
AnnaBridge 171:3a7713b1edbc 95 void GPIO_PortInit(GPIO_Type *base, uint32_t port);
AnnaBridge 171:3a7713b1edbc 96
AnnaBridge 171:3a7713b1edbc 97 /*!
AnnaBridge 171:3a7713b1edbc 98 * @brief Initializes the GPIO peripheral.
AnnaBridge 171:3a7713b1edbc 99 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortInit.
AnnaBridge 171:3a7713b1edbc 100 */
AnnaBridge 171:3a7713b1edbc 101 static inline void GPIO_Init(GPIO_Type *base, uint32_t port)
AnnaBridge 171:3a7713b1edbc 102 {
AnnaBridge 171:3a7713b1edbc 103 GPIO_PortInit(base, port);
AnnaBridge 171:3a7713b1edbc 104 }
AnnaBridge 171:3a7713b1edbc 105
AnnaBridge 171:3a7713b1edbc 106 /*!
AnnaBridge 171:3a7713b1edbc 107 * @brief Initializes a GPIO pin used by the board.
AnnaBridge 171:3a7713b1edbc 108 *
AnnaBridge 171:3a7713b1edbc 109 * To initialize the GPIO, define a pin configuration, either input or output, in the user file.
AnnaBridge 171:3a7713b1edbc 110 * Then, call the GPIO_PinInit() function.
AnnaBridge 171:3a7713b1edbc 111 *
AnnaBridge 171:3a7713b1edbc 112 * This is an example to define an input pin or output pin configuration:
AnnaBridge 171:3a7713b1edbc 113 * @code
AnnaBridge 171:3a7713b1edbc 114 * // Define a digital input pin configuration,
AnnaBridge 171:3a7713b1edbc 115 * gpio_pin_config_t config =
AnnaBridge 171:3a7713b1edbc 116 * {
AnnaBridge 171:3a7713b1edbc 117 * kGPIO_DigitalInput,
AnnaBridge 171:3a7713b1edbc 118 * 0,
AnnaBridge 171:3a7713b1edbc 119 * }
AnnaBridge 171:3a7713b1edbc 120 * //Define a digital output pin configuration,
AnnaBridge 171:3a7713b1edbc 121 * gpio_pin_config_t config =
AnnaBridge 171:3a7713b1edbc 122 * {
AnnaBridge 171:3a7713b1edbc 123 * kGPIO_DigitalOutput,
AnnaBridge 171:3a7713b1edbc 124 * 0,
AnnaBridge 171:3a7713b1edbc 125 * }
AnnaBridge 171:3a7713b1edbc 126 * @endcode
AnnaBridge 171:3a7713b1edbc 127 *
AnnaBridge 171:3a7713b1edbc 128 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 129 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 130 * @param pin GPIO pin number
AnnaBridge 171:3a7713b1edbc 131 * @param config GPIO pin configuration pointer
AnnaBridge 171:3a7713b1edbc 132 */
AnnaBridge 171:3a7713b1edbc 133 void GPIO_PinInit(GPIO_Type *base, uint32_t port, uint32_t pin, const gpio_pin_config_t *config);
AnnaBridge 171:3a7713b1edbc 134
AnnaBridge 171:3a7713b1edbc 135 /*@}*/
AnnaBridge 171:3a7713b1edbc 136
AnnaBridge 171:3a7713b1edbc 137 /*! @name GPIO Output Operations */
AnnaBridge 171:3a7713b1edbc 138 /*@{*/
AnnaBridge 171:3a7713b1edbc 139
AnnaBridge 171:3a7713b1edbc 140 /*!
AnnaBridge 171:3a7713b1edbc 141 * @brief Sets the output level of the one GPIO pin to the logic 1 or 0.
AnnaBridge 171:3a7713b1edbc 142 *
AnnaBridge 171:3a7713b1edbc 143 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 144 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 145 * @param pin GPIO pin number
AnnaBridge 171:3a7713b1edbc 146 * @param output GPIO pin output logic level.
AnnaBridge 171:3a7713b1edbc 147 * - 0: corresponding pin output low-logic level.
AnnaBridge 171:3a7713b1edbc 148 * - 1: corresponding pin output high-logic level.
AnnaBridge 171:3a7713b1edbc 149 */
AnnaBridge 171:3a7713b1edbc 150 static inline void GPIO_PinWrite(GPIO_Type *base, uint32_t port, uint32_t pin, uint8_t output)
AnnaBridge 171:3a7713b1edbc 151 {
AnnaBridge 171:3a7713b1edbc 152 base->B[port][pin] = output;
AnnaBridge 171:3a7713b1edbc 153 }
AnnaBridge 171:3a7713b1edbc 154
AnnaBridge 171:3a7713b1edbc 155 /*!
AnnaBridge 171:3a7713b1edbc 156 * @brief Sets the output level of the one GPIO pin to the logic 1 or 0.
AnnaBridge 171:3a7713b1edbc 157 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PinWrite.
AnnaBridge 171:3a7713b1edbc 158 */
AnnaBridge 171:3a7713b1edbc 159 static inline void GPIO_WritePinOutput(GPIO_Type *base, uint32_t port, uint32_t pin, uint8_t output)
AnnaBridge 171:3a7713b1edbc 160 {
AnnaBridge 171:3a7713b1edbc 161 base->B[port][pin] = output;
AnnaBridge 171:3a7713b1edbc 162 }
AnnaBridge 171:3a7713b1edbc 163 /*@}*/
AnnaBridge 171:3a7713b1edbc 164 /*! @name GPIO Input Operations */
AnnaBridge 171:3a7713b1edbc 165 /*@{*/
AnnaBridge 171:3a7713b1edbc 166
AnnaBridge 171:3a7713b1edbc 167 /*!
AnnaBridge 171:3a7713b1edbc 168 * @brief Reads the current input value of the GPIO PIN.
AnnaBridge 171:3a7713b1edbc 169 *
AnnaBridge 171:3a7713b1edbc 170 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 171 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 172 * @param pin GPIO pin number
AnnaBridge 171:3a7713b1edbc 173 * @retval GPIO port input value
AnnaBridge 171:3a7713b1edbc 174 * - 0: corresponding pin input low-logic level.
AnnaBridge 171:3a7713b1edbc 175 * - 1: corresponding pin input high-logic level.
AnnaBridge 171:3a7713b1edbc 176 */
AnnaBridge 171:3a7713b1edbc 177 static inline uint32_t GPIO_PinRead(GPIO_Type *base, uint32_t port, uint32_t pin)
AnnaBridge 171:3a7713b1edbc 178 {
AnnaBridge 171:3a7713b1edbc 179 return (uint32_t)base->B[port][pin];
AnnaBridge 171:3a7713b1edbc 180 }
AnnaBridge 171:3a7713b1edbc 181
AnnaBridge 171:3a7713b1edbc 182 /*!
AnnaBridge 171:3a7713b1edbc 183 * @brief Reads the current input value of the GPIO PIN.
AnnaBridge 171:3a7713b1edbc 184 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PinRead.
AnnaBridge 171:3a7713b1edbc 185 */
AnnaBridge 171:3a7713b1edbc 186 static inline uint32_t GPIO_ReadPinInput(GPIO_Type *base, uint32_t port, uint32_t pin)
AnnaBridge 171:3a7713b1edbc 187 {
AnnaBridge 171:3a7713b1edbc 188 return GPIO_PinRead(base, port, pin);
AnnaBridge 171:3a7713b1edbc 189 }
AnnaBridge 171:3a7713b1edbc 190 /*@}*/
AnnaBridge 171:3a7713b1edbc 191
AnnaBridge 171:3a7713b1edbc 192 /*!
AnnaBridge 171:3a7713b1edbc 193 * @brief Sets the output level of the multiple GPIO pins to the logic 1.
AnnaBridge 171:3a7713b1edbc 194 *
AnnaBridge 171:3a7713b1edbc 195 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 196 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 197 * @param mask GPIO pin number macro
AnnaBridge 171:3a7713b1edbc 198 */
AnnaBridge 171:3a7713b1edbc 199 static inline void GPIO_PortSet(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 200 {
AnnaBridge 171:3a7713b1edbc 201 base->SET[port] = mask;
AnnaBridge 171:3a7713b1edbc 202 }
AnnaBridge 171:3a7713b1edbc 203
AnnaBridge 171:3a7713b1edbc 204 /*!
AnnaBridge 171:3a7713b1edbc 205 * @brief Sets the output level of the multiple GPIO pins to the logic 1.
AnnaBridge 171:3a7713b1edbc 206 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortSet.
AnnaBridge 171:3a7713b1edbc 207 */
AnnaBridge 171:3a7713b1edbc 208 static inline void GPIO_SetPinsOutput(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 209 {
AnnaBridge 171:3a7713b1edbc 210 GPIO_PortSet(base, port, mask);
AnnaBridge 171:3a7713b1edbc 211 }
AnnaBridge 171:3a7713b1edbc 212
AnnaBridge 171:3a7713b1edbc 213 /*!
AnnaBridge 171:3a7713b1edbc 214 * @brief Sets the output level of the multiple GPIO pins to the logic 0.
AnnaBridge 171:3a7713b1edbc 215 *
AnnaBridge 171:3a7713b1edbc 216 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 217 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 218 * @param mask GPIO pin number macro
AnnaBridge 171:3a7713b1edbc 219 */
AnnaBridge 171:3a7713b1edbc 220 static inline void GPIO_PortClear(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 221 {
AnnaBridge 171:3a7713b1edbc 222 base->CLR[port] = mask;
AnnaBridge 171:3a7713b1edbc 223 }
AnnaBridge 171:3a7713b1edbc 224
AnnaBridge 171:3a7713b1edbc 225 /*!
AnnaBridge 171:3a7713b1edbc 226 * @brief Sets the output level of the multiple GPIO pins to the logic 0.
AnnaBridge 171:3a7713b1edbc 227 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortClear.
AnnaBridge 171:3a7713b1edbc 228 */
AnnaBridge 171:3a7713b1edbc 229 static inline void GPIO_ClearPinsOutput(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 230 {
AnnaBridge 171:3a7713b1edbc 231 GPIO_PortClear(base, port, mask);
AnnaBridge 171:3a7713b1edbc 232 }
AnnaBridge 171:3a7713b1edbc 233
AnnaBridge 171:3a7713b1edbc 234 /*!
AnnaBridge 171:3a7713b1edbc 235 * @brief Reverses current output logic of the multiple GPIO pins.
AnnaBridge 171:3a7713b1edbc 236 *
AnnaBridge 171:3a7713b1edbc 237 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 238 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 239 * @param mask GPIO pin number macro
AnnaBridge 171:3a7713b1edbc 240 */
AnnaBridge 171:3a7713b1edbc 241 static inline void GPIO_PortToggle(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 242 {
AnnaBridge 171:3a7713b1edbc 243 base->NOT[port] = mask;
AnnaBridge 171:3a7713b1edbc 244 }
AnnaBridge 171:3a7713b1edbc 245
AnnaBridge 171:3a7713b1edbc 246 /*!
AnnaBridge 171:3a7713b1edbc 247 * @brief Reverses current output logic of the multiple GPIO pins.
AnnaBridge 171:3a7713b1edbc 248 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortToggle.
AnnaBridge 171:3a7713b1edbc 249 */
AnnaBridge 171:3a7713b1edbc 250 static inline void GPIO_TogglePinsOutput(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 251 {
AnnaBridge 171:3a7713b1edbc 252 GPIO_PortToggle(base, port, mask);
AnnaBridge 171:3a7713b1edbc 253 }
AnnaBridge 171:3a7713b1edbc 254 /*@}*/
AnnaBridge 171:3a7713b1edbc 255
AnnaBridge 171:3a7713b1edbc 256 /*!
AnnaBridge 171:3a7713b1edbc 257 * @brief Reads the current input value of the whole GPIO port.
AnnaBridge 171:3a7713b1edbc 258 *
AnnaBridge 171:3a7713b1edbc 259 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 260 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 261 */
AnnaBridge 171:3a7713b1edbc 262 static inline uint32_t GPIO_PortRead(GPIO_Type *base, uint32_t port)
AnnaBridge 171:3a7713b1edbc 263 {
AnnaBridge 171:3a7713b1edbc 264 return (uint32_t)base->PIN[port];
AnnaBridge 171:3a7713b1edbc 265 }
AnnaBridge 171:3a7713b1edbc 266
AnnaBridge 171:3a7713b1edbc 267 /*!
AnnaBridge 171:3a7713b1edbc 268 * @brief Reads the current input value of the whole GPIO port.
AnnaBridge 171:3a7713b1edbc 269 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortRead
AnnaBridge 171:3a7713b1edbc 270 */
AnnaBridge 171:3a7713b1edbc 271 static inline uint32_t GPIO_ReadPinsInput(GPIO_Type *base, uint32_t port)
AnnaBridge 171:3a7713b1edbc 272 {
AnnaBridge 171:3a7713b1edbc 273 return GPIO_PortRead(base, port);
AnnaBridge 171:3a7713b1edbc 274 }
AnnaBridge 171:3a7713b1edbc 275
AnnaBridge 171:3a7713b1edbc 276 /*@}*/
AnnaBridge 171:3a7713b1edbc 277 /*! @name GPIO Mask Operations */
AnnaBridge 171:3a7713b1edbc 278 /*@{*/
AnnaBridge 171:3a7713b1edbc 279
AnnaBridge 171:3a7713b1edbc 280 /*!
AnnaBridge 171:3a7713b1edbc 281 * @brief Sets port mask, 0 - enable pin, 1 - disable pin.
AnnaBridge 171:3a7713b1edbc 282 *
AnnaBridge 171:3a7713b1edbc 283 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 284 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 285 * @param mask GPIO pin number macro
AnnaBridge 171:3a7713b1edbc 286 */
AnnaBridge 171:3a7713b1edbc 287 static inline void GPIO_PortMaskedSet(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 288 {
AnnaBridge 171:3a7713b1edbc 289 base->MASK[port] = mask;
AnnaBridge 171:3a7713b1edbc 290 }
AnnaBridge 171:3a7713b1edbc 291
AnnaBridge 171:3a7713b1edbc 292 /*!
AnnaBridge 171:3a7713b1edbc 293 * @brief Sets port mask, 0 - enable pin, 1 - disable pin.
AnnaBridge 171:3a7713b1edbc 294 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortMaskedSet.
AnnaBridge 171:3a7713b1edbc 295 */
AnnaBridge 171:3a7713b1edbc 296 static inline void GPIO_SetPortMask(GPIO_Type *base, uint32_t port, uint32_t mask)
AnnaBridge 171:3a7713b1edbc 297 {
AnnaBridge 171:3a7713b1edbc 298 GPIO_PortMaskedSet(base, port, mask);
AnnaBridge 171:3a7713b1edbc 299 }
AnnaBridge 171:3a7713b1edbc 300
AnnaBridge 171:3a7713b1edbc 301 /*!
AnnaBridge 171:3a7713b1edbc 302 * @brief Sets the output level of the masked GPIO port. Only pins enabled by GPIO_SetPortMask() will be affected.
AnnaBridge 171:3a7713b1edbc 303 *
AnnaBridge 171:3a7713b1edbc 304 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 305 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 306 * @param output GPIO port output value.
AnnaBridge 171:3a7713b1edbc 307 */
AnnaBridge 171:3a7713b1edbc 308 static inline void GPIO_PortMaskedWrite(GPIO_Type *base, uint32_t port, uint32_t output)
AnnaBridge 171:3a7713b1edbc 309 {
AnnaBridge 171:3a7713b1edbc 310 base->MPIN[port] = output;
AnnaBridge 171:3a7713b1edbc 311 }
AnnaBridge 171:3a7713b1edbc 312
AnnaBridge 171:3a7713b1edbc 313 /*!
AnnaBridge 171:3a7713b1edbc 314 * @brief Sets the output level of the masked GPIO port. Only pins enabled by GPIO_SetPortMask() will be affected.
AnnaBridge 171:3a7713b1edbc 315 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortMaskedWrite.
AnnaBridge 171:3a7713b1edbc 316 */
AnnaBridge 171:3a7713b1edbc 317 static inline void GPIO_WriteMPort(GPIO_Type *base, uint32_t port, uint32_t output)
AnnaBridge 171:3a7713b1edbc 318 {
AnnaBridge 171:3a7713b1edbc 319 GPIO_PortMaskedWrite(base, port, output);
AnnaBridge 171:3a7713b1edbc 320 }
AnnaBridge 171:3a7713b1edbc 321
AnnaBridge 171:3a7713b1edbc 322 /*!
AnnaBridge 171:3a7713b1edbc 323 * @brief Reads the current input value of the masked GPIO port. Only pins enabled by GPIO_SetPortMask() will be
AnnaBridge 171:3a7713b1edbc 324 * affected.
AnnaBridge 171:3a7713b1edbc 325 *
AnnaBridge 171:3a7713b1edbc 326 * @param base GPIO peripheral base pointer(Typically GPIO)
AnnaBridge 171:3a7713b1edbc 327 * @param port GPIO port number
AnnaBridge 171:3a7713b1edbc 328 * @retval masked GPIO port value
AnnaBridge 171:3a7713b1edbc 329 */
AnnaBridge 171:3a7713b1edbc 330 static inline uint32_t GPIO_PortMaskedRead(GPIO_Type *base, uint32_t port)
AnnaBridge 171:3a7713b1edbc 331 {
AnnaBridge 171:3a7713b1edbc 332 return (uint32_t)base->MPIN[port];
AnnaBridge 171:3a7713b1edbc 333 }
AnnaBridge 171:3a7713b1edbc 334
AnnaBridge 171:3a7713b1edbc 335 /*!
AnnaBridge 171:3a7713b1edbc 336 * @brief Reads the current input value of the masked GPIO port. Only pins enabled by GPIO_SetPortMask() will be
AnnaBridge 171:3a7713b1edbc 337 * affected.
AnnaBridge 171:3a7713b1edbc 338 * @deprecated Do not use this function. It has been superceded by @ref GPIO_PortMaskedRead.
AnnaBridge 171:3a7713b1edbc 339 */
AnnaBridge 171:3a7713b1edbc 340 static inline uint32_t GPIO_ReadMPort(GPIO_Type *base, uint32_t port)
AnnaBridge 171:3a7713b1edbc 341 {
AnnaBridge 171:3a7713b1edbc 342 return GPIO_PortMaskedRead(base, port);
AnnaBridge 171:3a7713b1edbc 343 }
AnnaBridge 171:3a7713b1edbc 344
AnnaBridge 171:3a7713b1edbc 345 /*@}*/
AnnaBridge 171:3a7713b1edbc 346
AnnaBridge 171:3a7713b1edbc 347 #if defined(__cplusplus)
AnnaBridge 171:3a7713b1edbc 348 }
AnnaBridge 171:3a7713b1edbc 349 #endif
AnnaBridge 171:3a7713b1edbc 350
AnnaBridge 171:3a7713b1edbc 351 /*!
AnnaBridge 171:3a7713b1edbc 352 * @}
AnnaBridge 171:3a7713b1edbc 353 */
AnnaBridge 171:3a7713b1edbc 354
AnnaBridge 171:3a7713b1edbc 355 #endif /* _LPC_GPIO_H_*/