Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
R
RIOT
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
cm-projects
RIOT
Commits
d1093fcc
Commit
d1093fcc
authored
11 years ago
by
Hauke Petersen
Browse files
Options
Downloads
Patches
Plain Diff
Initial import of low-level GPIO driver interface
parent
28f267f8
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
drivers/include/periph/gpio.h
+168
-0
168 additions, 0 deletions
drivers/include/periph/gpio.h
with
168 additions
and
0 deletions
drivers/include/periph/gpio.h
0 → 100644
+
168
−
0
View file @
d1093fcc
/*
* Copyright (C) 2014 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the LGPLv2 License.
* See the file LICENSE in the top level directory for more details.
*/
/**
* @ingroup driver_periph
* @brief Low-level GPIO periphial driver
* @{
*
* @file gpio.h
* @brief Low-level GPIO periphial driver interface definitions
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*/
#ifndef __GPIO_H
#define __GPIO_H
#include
"periph_conf.h"
/**
* @brief Definition of available GPIO devices. Each device is managin exactly one pin.
*/
#ifdef GPIO_NUMOF
typedef
enum
{
#ifdef GPIO_0_EN
GPIO_0
=
0
,
///< GPIO device 0
#endif
#ifdef GPIO_1_EN
GPIO_1
,
///< GPIO device 1
#endif
#ifdef GPIO_2_EN
GPIO_2
,
///< GPIO device 2
#endif
#ifdef GPIO_3_EN
GPIO_3
,
///< GPIO device 3
#endif
#ifdef GPIO_4_EN
GPIO_4
,
///< GPIO device 4
#endif
#ifdef GPIO_5_EN
GPIO_5
,
///< GPIO device 5
#endif
#ifdef GPIO_6_EN
GPIO_6
,
///< GPIO device 6
#endif
#ifdef GPIO_7_EN
GPIO_7
,
///< GPIO device 7
#endif
#ifdef GPIO_8_EN
GPIO_8
,
///< GPIO device 8
#endif
#ifdef GPIO_9_EN
GPIO_9
,
///< GPIO device 9
#endif
#ifdef GPIO_10_EN
GPIO_10
,
///< GPIO device 10
#endif
#ifdef GPIO_11_EN
GPIO_11
,
///< GPIO device 11
#endif
#ifdef GPIO_12_EN
GPIO_12
,
///< GPIO device 12
#endif
#ifdef GPIO_13_EN
GPIO_13
,
///< GPIO device 13
#endif
#ifdef GPIO_14_EN
GPIO_14
,
///< GPIO device 14
#endif
#ifdef GPIO_15_EN
GPIO_15
///< GPIO device 15
#endif
}
gpio_t
;
#endif
/**
* @brief Definition of pull-up/pull-down modes
*/
typedef
enum
{
GPIO_PULLDOWN
,
///< enable internal pull-down resistor
GPIO_PULLUP
,
///< enable internal pull-up resistor
GPIO_NOPULL
///< do not use internal pull resistors
}
gpio_pp_t
;
/**
* @brief Definition of possible active flanks for external interrupt mode
*/
typedef
enum
{
GPIO_FALLING
,
///< emit interrupt on falling flank
GPIO_RISING
,
///< emit interrupt on rising flank
GPIO_BOTH
///< emit interrupt on both flanks
}
gpio_flank_t
;
/**
* @brief Initialize GPIO pin as output pin
*
* @param dev the GPIO pin to set as output
* @param pullup define if pull resistors should be used
*/
void
gpio_init_out
(
gpio_t
dev
,
gpio_pp_t
pullup
);
/**
* @brief Initialize a GPIO pin in input mode
*
* @param dev the GPIO pin to use as input
* @param pullup define if pull resistors should be used
*/
void
gpio_init_in
(
gpio_t
dev
,
gpio_pp_t
pullup
);
/**
* @brief Initialize a GPIO pin for external interrupt usage
*
* The registerd callback function will be called in interrupt context everytime the defined flank(s)
* are detected.
*
* The interrupt is activated automatically after the initialization.
*
* @param dev the GPIO pin to initialize
* @param pullup define if pull resistors should be enabled
* @param flank define the active flank(s)
* @param cb register the callback that is called in interrupt context
*/
void
gpio_init_int
(
gpio_t
dev
,
gpio_pp_t
pullup
,
gpio_flank_t
flank
,
void
(
*
cb
)(
void
));
/**
* @brief Get the current value of the given GPIO pin
*
* @param dev the GPIO pin to read
* @return the current value, 0 for LOW, != 0 for HIGH
*/
int
gpio_read
(
gpio_t
dev
);
/**
* @brief Set the given GPIO pin to HIGH
*
* @param dev the GPIO pin to set
*/
void
gpio_set
(
gpio_t
dev
);
/**
* @brief Set the given GPIO pin to LOW
*
* @param dev the GPIO pin to clear
*/
void
gpio_clear
(
gpio_t
dev
);
/**
* @brief Toggle the value of the given GPIO pin
*
* @param dev the GPIO pin to toggle
*/
void
gpio_toggle
(
gpio_t
dev
);
/**
* @brief Set the given GPIO pin to the given value
*
* @param dev the GPIO pin to set
* @param value value to set the pin to, 0 for LOW, HIGH otherwise
*/
void
gpio_write
(
gpio_t
dev
,
int
value
);
#endif
/* __GPIO_H */
/** @} */
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment