Порты ввода/вывода (GPIO).
Подробнее...
|
Для выбора одного из пинов порта следует использовать сумму имени порта и номера пина. Например P_B+4.
|
| #define | P_A (0) |
| |
| #define | P_B (32 * 1) |
| |
| #define | P_C (32 * 2) |
| |
| #define | P_D (32 * 3) |
| |
| #define | P_E (32 * 4) |
| |
| #define | P_F (32 * 5) |
| |
| #define | P_G (32 * 6) |
| |
| #define | P_H (32 * 7) |
| |
| #define | P_I (32 * 8) |
| |
Настройка портов GPIO, подключение линий ввода/вывода к аппаратным модулям процессора.
Подключение:
#include <gpio.h>
- См. также
- Общее описание работы с портами ввода/вывода в главе GPIO – Порты ввода/вывода.
◆ P_A
◆ P_B
◆ P_C
◆ P_D
◆ P_E
◆ P_F
◆ P_G
◆ P_H
◆ P_I
◆ eGpioInterruptMode
| Элементы перечислений |
|---|
| eintPositiveEdge | Внешнее прерывание сработает по переднему фронту импульса.
|
| eintNegativeEdge | Внешнее прерывание сработает по заднему фронту импульса.
|
| eintHighLevel | Внешнее прерывание сработает по высокому уровню сигнала.
|
| eintLowLevel | Внешнее прерывание сработает по низкому уровню сигнала.
|
| eintDoubleEdge | Внешнее прерывание сработает по обоим фронтам сигнала.
|
eGpioInterruptMode
Definition: gpio.h:227
@ eintPositiveEdge
Внешнее прерывание сработает по переднему фронту импульса.
Definition: gpio.h:228
@ eintNegativeEdge
Внешнее прерывание сработает по заднему фронту импульса.
Definition: gpio.h:229
@ eintDoubleEdge
Внешнее прерывание сработает по обоим фронтам сигнала.
Definition: gpio.h:232
@ eintHighLevel
Внешнее прерывание сработает по высокому уровню сигнала.
Definition: gpio.h:230
@ eintLowLevel
Внешнее прерывание сработает по низкому уровню сигнала.
Definition: gpio.h:231
◆ gpio_direction_input()
| int gpio_direction_input |
( |
unsigned |
gpio | ) |
|
Функция конфигурирует выбранный пин указанного порта как вход. Функция является обёрткой функции gpio_set_mux() и записывает 0 в мультиплексор пина.
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
- Возвращает
- Всегда OK.
◆ gpio_direction_output()
| int gpio_direction_output |
( |
unsigned |
gpio, |
|
|
int |
value |
|
) |
| |
Функция конфигурирует выбранный пин указанного порта как выход. Функция является обёрткой функции gpio_set_mux() и записывает 1 в мультиплексор пина. После чего сразу устанавливает указанное значение на выходе пина с помощью gpio_set_value().
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
| value | 0 устанавливает низкий уровень на выходе, 1 – высокий. |
- Возвращает
- Всегда OK.
◆ gpio_from_string()
| unsigned gpio_from_string |
( |
const char * |
str, |
|
|
bool * |
ok |
|
) |
| |
Функция получает номер GPIO из строк, содержащих имя порта и номер пина. Стока может быть записана без пробелов, как в документации на процессор, либо в стиле MULTEX-ARM:
bool ok;
unsigned gpio_from_string(const char *str, bool *ok)
Получить номер GPIO из строки.
- Аргументы
-
| str | Строка содержащая имя линии GPIO. |
| ok | Проверка успешного преобразования. Если в строке не обнаружено название лини – возвращает false. |
- Возвращает
- Номер GPIO.
◆ gpio_get_value()
| int gpio_get_value |
( |
unsigned |
gpio | ) |
|
Функция возвращает значение, соответствующее уровню сигнала на входе выбранного пина указанного порта. Выбранная линия должна быть сконфигурирована как вход с помощью gpio_direction_input().
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
- Возвращает
- 0 если на входе присутствует низкий уровень, 1 – если высокий.
◆ gpio_pull_disable()
| int gpio_pull_disable |
( |
unsigned |
gpio | ) |
|
Функция отключает подтягивающие резисторы от выбранной линии заданного порта. Выбранная линия должна быть сконфигурирована как вход с помощью gpio_direction_input().
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
- Возвращает
- Всегда OK.
◆ gpio_pull_down()
| int gpio_pull_down |
( |
unsigned |
gpio | ) |
|
Функция подтягивает выбранную линию заданного порта к минусу питания. Выбранная линия должна быть сконфигурирована как вход с помощью gpio_direction_input().
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
- Возвращает
- Всегда OK.
◆ gpio_pull_up()
| int gpio_pull_up |
( |
unsigned |
gpio | ) |
|
Функция подтягивает выбранную линию заданного порта к плюсу питания. Выбранная линия должна быть сконфигурирована как вход с помощью gpio_direction_input().
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
- Возвращает
- Всегда OK.
◆ gpio_set_mux()
| int gpio_set_mux |
( |
unsigned int |
gpio, |
|
|
int |
mux |
|
) |
| |
Установить значение мультиплексора указанного пина выбранного порта для подключения к аппаратным модулям процессора. Функция может использоваться так же для настройки пина как обычного GPIO.
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
| mux | Записываемое значение мультиплексора — одно из значений, описанных в документации на используемый процессор. |
- Возвращает
- Всегда OK.
◆ gpio_set_value()
| int gpio_set_value |
( |
unsigned |
gpio, |
|
|
int |
value |
|
) |
| |
Функция позволяет установить заданное значение на выходе выбранного пина указанного порта. Выбранная линия должна быть сконфигурирована как выход с помощью gpio_direction_output().
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
| value | 0 устанавливает низкий уровень на выходе линии, 1 — высокий уровень. |
- Возвращает
- Всегда OK.
◆ gpioInterruptConnect()
Функция подключает процедуру пользователя в качестве обработчика аппаратного прерывания линии ввода/вывода процессора с помощью функции interruptConnect(). В драйвере реализовано раздельное подключение процедур пользователя на каждую линию (аппаратно для всех линий вызывается один и тот же обработчик драйвера).
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
| mode | Режим генерации прерывания — выбор фронта сигнала, по которому будет сгенерировано прерывание. |
| group | Группа, к которой относится прерывание. Рекомендуется выбирать значение из макросов соответствующей группы. |
| priority | Приоритет прерывания внутри группы. Рекомендуется выбирать значение из макросов соответствующей группы. |
| routine | Процедура, которую требуется подключить в качестве обработчика. |
| parameter | Параметр пользовательской процедуры обработчика прерывания. |
- Возвращает
- OK при успешном выполнении, иначе ERROR.
◆ gpioInterruptDisconnect()
| STATUS gpioInterruptDisconnect |
( |
unsigned int |
gpio | ) |
|
Отключается только обработка данной линии в контроллере внешних прерываний. Само прерывание IRQ остаётся активным, так как в контроллере к нему могут быть подключены другие линии.
- Аргументы
-
| gpio | Имя и номер порта из группы макросов описания имён портов. |
- Возвращает
- OK при успешном выполнении, иначе ERROR.