S32 SDK
gpio_hal.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 - 2015, Freescale Semiconductor, Inc.
3  * Copyright 2016 NXP
4  * All rights reserved.
5  *
6  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
7  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
9  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
10  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
11  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
12  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
15  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
16  * THE POSSIBILITY OF SUCH DAMAGE.
17  */
18 
19 #ifndef GPIO_HAL_H
20 #define GPIO_HAL_H
21 
22 #include <stdint.h>
23 #include "device_registers.h"
24 
41 /*******************************************************************************
42  * API
43  ******************************************************************************/
44 
45  #if defined(__cplusplus)
46 extern "C" {
47 #endif
48 
68 static inline void GPIO_HAL_WritePin(GPIO_Type* const baseAddr,
69  const uint32_t pinNumber, const uint32_t pinValue)
70 {
71  uint32_t pinsValues = (uint32_t)(baseAddr->PDOR);
72  pinsValues &= ~(1UL << pinNumber);
73  pinsValues |= pinValue << pinNumber;
74  baseAddr->PDOR = GPIO_PDOR_PDO(pinsValues);
75 }
76 
89 static inline void GPIO_HAL_WritePins(GPIO_Type* const baseAddr, const uint32_t pins)
90 {
91  baseAddr->PDOR = GPIO_PDOR_PDO(pins);
92 }
93 
107 static inline uint32_t GPIO_HAL_GetPinsOutput(const GPIO_Type* const baseAddr)
108 {
109  return (uint32_t)(baseAddr->PDOR);
110 }
111 
126 static inline void GPIO_HAL_SetPins(GPIO_Type* const baseAddr, const uint32_t pins)
127 {
128  baseAddr->PSOR = GPIO_PSOR_PTSO(pins);
129 }
130 
145 static inline void GPIO_HAL_ClearPins(GPIO_Type* const baseAddr, const uint32_t pins)
146 {
147  baseAddr->PCOR = GPIO_PCOR_PTCO(pins);
148 }
149 
163 static inline void GPIO_HAL_TogglePins(GPIO_Type* const baseAddr, const uint32_t pins)
164 {
165  baseAddr->PTOR = GPIO_PTOR_PTTO(pins);
166 }
167 
181 static inline uint32_t GPIO_HAL_ReadPins(const GPIO_Type* const baseAddr)
182 {
183  return (uint32_t)(baseAddr->PDIR);
184 }
185 
200 static inline uint32_t GPIO_HAL_GetPinsDirection(const GPIO_Type* const baseAddr)
201 {
202  return (uint32_t)(baseAddr->PDDR);
203 }
204 
219 static inline void GPIO_HAL_SetPinDirection(GPIO_Type* const baseAddr,
220  const uint32_t pinNumber, const uint32_t pinDirection)
221 {
222  uint32_t pinsDirections = (uint32_t) (baseAddr->PDDR);
223  pinsDirections &= ~(1UL << pinNumber);
224  pinsDirections |= (pinDirection << pinNumber);
225  baseAddr->PDDR = GPIO_PDDR_PDD(pinsDirections);
226 }
227 
243 static inline void GPIO_HAL_SetPinsDirection(GPIO_Type* const baseAddr, const uint32_t pins)
244 {
245  baseAddr->PDDR = GPIO_PDDR_PDD(pins);
246 }
247 
263 static inline void GPIO_HAL_SetPortInputDisable(GPIO_Type* const baseAddr, const uint32_t pins)
264 {
265  baseAddr->PIDR = GPIO_PDDR_PDD(pins);
266 }
267 
282 static inline uint32_t GPIO_HAL_GetPortInputDisable(const GPIO_Type* const baseAddr)
283 {
284  return (uint32_t)baseAddr->PIDR;
285 }
286 
289 #if defined(__cplusplus)
290 }
291 #endif
292 
295 #endif /* GPIO_HAL_H*/
296 /*******************************************************************************
297  * EOF
298  ******************************************************************************/
__IO uint32_t PIDR
Definition: S32K144.h:5018
__O uint32_t PTOR
Definition: S32K144.h:5015
#define GPIO_PDDR_PDD(x)
Definition: S32K144.h:5089
static void GPIO_HAL_SetPins(GPIO_Type *const baseAddr, const uint32_t pins)
Write pins with 'Set' value.
Definition: gpio_hal.h:126
static uint32_t GPIO_HAL_ReadPins(const GPIO_Type *const baseAddr)
Read input pins.
Definition: gpio_hal.h:181
static void GPIO_HAL_ClearPins(GPIO_Type *const baseAddr, const uint32_t pins)
Write pins to 'Clear' value.
Definition: gpio_hal.h:145
static uint32_t GPIO_HAL_GetPortInputDisable(const GPIO_Type *const baseAddr)
Get the pins input disable state for a port.
Definition: gpio_hal.h:282
static uint32_t GPIO_HAL_GetPinsDirection(const GPIO_Type *const baseAddr)
Get the pins directions configuration for a port.
Definition: gpio_hal.h:200
__IO uint32_t PDOR
Definition: S32K144.h:5012
static void GPIO_HAL_SetPinsDirection(GPIO_Type *const baseAddr, const uint32_t pins)
Set the pins directions configuration for a port.
Definition: gpio_hal.h:243
__O uint32_t PSOR
Definition: S32K144.h:5013
static uint32_t GPIO_HAL_GetPinsOutput(const GPIO_Type *const baseAddr)
Get the current output from a port.
Definition: gpio_hal.h:107
static void GPIO_HAL_WritePins(GPIO_Type *const baseAddr, const uint32_t pins)
Write all pins of a port.
Definition: gpio_hal.h:89
#define GPIO_PDOR_PDO(x)
Definition: S32K144.h:5064
#define GPIO_PSOR_PTSO(x)
Definition: S32K144.h:5069
static void GPIO_HAL_SetPinDirection(GPIO_Type *const baseAddr, const uint32_t pinNumber, const uint32_t pinDirection)
Configure the direction for a certain pin from a port.
Definition: gpio_hal.h:219
static void GPIO_HAL_SetPortInputDisable(GPIO_Type *const baseAddr, const uint32_t pins)
Set the pins input disable state for a port.
Definition: gpio_hal.h:263
static void GPIO_HAL_WritePin(GPIO_Type *const baseAddr, const uint32_t pinNumber, const uint32_t pinValue)
Write a pin of a port with a given value.
Definition: gpio_hal.h:68
__I uint32_t PDIR
Definition: S32K144.h:5016
#define GPIO_PCOR_PTCO(x)
Definition: S32K144.h:5074
__O uint32_t PCOR
Definition: S32K144.h:5014
static void GPIO_HAL_TogglePins(GPIO_Type *const baseAddr, const uint32_t pins)
Toggle pins value.
Definition: gpio_hal.h:163
#define GPIO_PTOR_PTTO(x)
Definition: S32K144.h:5079
__IO uint32_t PDDR
Definition: S32K144.h:5017