Committer:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4
Date:
Tue Jun 14 09:21:18 2022 +0000
Revision:
0:bdf663c61a82
lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 1
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 2 /** \addtogroup hal */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 3 /** @{*/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 4 /* mbed Microcontroller Library
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 5 * Copyright (c) 2006-2013 ARM Limited
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 6 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 7 * Licensed under the Apache License, Version 2.0 (the "License");
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 8 * you may not use this file except in compliance with the License.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 9 * You may obtain a copy of the License at
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 10 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 11 * http://www.apache.org/licenses/LICENSE-2.0
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 12 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 13 * Unless required by applicable law or agreed to in writing, software
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 14 * distributed under the License is distributed on an "AS IS" BASIS,
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 16 * See the License for the specific language governing permissions and
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 17 * limitations under the License.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 18 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 19 #ifndef MBED_GPIO_API_H
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 20 #define MBED_GPIO_API_H
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 21
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 22 #include <stdint.h>
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 23 #include "device.h"
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 24
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 25 #ifdef __cplusplus
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 26 extern "C" {
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 27 #endif
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 28
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 29 /**
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 30 * \defgroup hal_gpio GPIO HAL functions
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 31 * @{
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 32 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 33
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 34 /** Set the given pin as GPIO
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 35 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 36 * @param pin The pin to be set as GPIO
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 37 * @return The GPIO port mask for this pin
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 38 **/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 39 uint32_t gpio_set(PinName pin);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 40 /* Checks if gpio object is connected (pin was not initialized with NC)
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 41 * @param pin The pin to be set as GPIO
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 42 * @return 0 if port is initialized with NC
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 43 **/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 44 int gpio_is_connected(const gpio_t *obj);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 45
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 46 /** Initialize the GPIO pin
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 47 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 48 * @param obj The GPIO object to initialize
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 49 * @param pin The GPIO pin to initialize
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 50 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 51 void gpio_init(gpio_t *obj, PinName pin);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 52
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 53 /** Set the input pin mode
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 54 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 55 * @param obj The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 56 * @param mode The pin mode to be set
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 57 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 58 void gpio_mode(gpio_t *obj, PinMode mode);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 59
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 60 /** Set the pin direction
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 61 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 62 * @param obj The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 63 * @param direction The pin direction to be set
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 64 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 65 void gpio_dir(gpio_t *obj, PinDirection direction);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 66
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 67 /** Set the output value
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 68 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 69 * @param obj The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 70 * @param value The value to be set
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 71 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 72 void gpio_write(gpio_t *obj, int value);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 73
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 74 /** Read the input value
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 75 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 76 * @param obj The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 77 * @return An integer value 1 or 0
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 78 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 79 int gpio_read(gpio_t *obj);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 80
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 81 // the following functions are generic and implemented in the common gpio.c file
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 82 // TODO: fix, will be moved to the common gpio header file
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 83
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 84 /** Init the input pin and set mode to PullDefault
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 85 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 86 * @param gpio The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 87 * @param pin The pin name
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 88 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 89 void gpio_init_in(gpio_t* gpio, PinName pin);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 90
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 91 /** Init the input pin and set the mode
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 92 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 93 * @param gpio The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 94 * @param pin The pin name
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 95 * @param mode The pin mode to be set
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 96 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 97 void gpio_init_in_ex(gpio_t* gpio, PinName pin, PinMode mode);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 98
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 99 /** Init the output pin as an output, with predefined output value 0
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 100 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 101 * @param gpio The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 102 * @param pin The pin name
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 103 * @return An integer value 1 or 0
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 104 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 105 void gpio_init_out(gpio_t* gpio, PinName pin);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 106
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 107 /** Init the pin as an output and set the output value
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 108 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 109 * @param gpio The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 110 * @param pin The pin name
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 111 * @param value The value to be set
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 112 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 113 void gpio_init_out_ex(gpio_t* gpio, PinName pin, int value);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 114
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 115 /** Init the pin to be in/out
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 116 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 117 * @param gpio The GPIO object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 118 * @param pin The pin name
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 119 * @param direction The pin direction to be set
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 120 * @param mode The pin mode to be set
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 121 * @param value The value to be set for an output pin
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 122 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 123 void gpio_init_inout(gpio_t* gpio, PinName pin, PinDirection direction, PinMode mode, int value);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 124
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 125 /**@}*/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 126
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 127 #ifdef __cplusplus
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 128 }
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 129 #endif
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 130
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 131 #endif
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 132
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 133 /** @}*/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 134