ОСРВ MULTEX-ARM
Руководство программиста

Порты ввода/вывода (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)
 

Настройка внешних прерываний

enum  eGpioInterruptMode {
  eintPositiveEdge = 0x0 , eintNegativeEdge = 0x1 , eintHighLevel = 0x2 , eintLowLevel = 0x3 ,
  eintDoubleEdge = 0x4
}
 
STATUS gpioInterruptConnect (unsigned int gpio, eGpioInterruptMode mode, int group, int priority, usr_int_proc routine, int parameter)
 Подключение обработчика прерывания к линии GPIO. Подробнее...
 
STATUS gpioInterruptDisconnect (unsigned int gpio)
 Отключение обработки прерывания для заданной линии. Подробнее...
 

Управление выходным мультиплексором

int gpio_direction_input (unsigned gpio)
 Сконфигурировать пин порта как вход. Подробнее...
 
int gpio_direction_output (unsigned gpio, int value)
 Сконфигурировать пин порта как выход и выставить заданное значение. Подробнее...
 
int gpio_set_mux (unsigned int gpio, int mux)
 Сконфигурировать пин порта. Подробнее...
 

Управление линией ввода/вывода

int gpio_get_value (unsigned gpio)
 Получить значение на линии ввода. Подробнее...
 
int gpio_set_value (unsigned gpio, int value)
 Выставить значение на линии вывода. Подробнее...
 

Настройка подтягивающих резисторов

int gpio_pull_disable (unsigned gpio)
 Отпустить линию. Подробнее...
 
int gpio_pull_down (unsigned gpio)
 Подтянуть линию к минусу питания. Подробнее...
 
int gpio_pull_up (unsigned gpio)
 Подтянуть линию к плюсу питания. Подробнее...
 

Прочее

unsigned gpio_from_string (const char *str, bool *ok)
 Получить номер GPIO из строки. Подробнее...
 

Подробное описание

Настройка портов GPIO, подключение линий ввода/вывода к аппаратным модулям процессора.

Подключение:

#include <gpio.h> 
См. также
Общее описание работы с портами ввода/вывода в главе GPIO – Порты ввода/вывода.

Макросы

◆ P_A

#define P_A   (0)

Порт ввода/вывода A.

◆ P_B

#define P_B   (32 * 1)

Порт ввода/вывода B.

◆ P_C

#define P_C   (32 * 2)

Порт ввода/вывода C.

◆ P_D

#define P_D   (32 * 3)

Порт ввода/вывода D.

◆ P_E

#define P_E   (32 * 4)

Порт ввода/вывода E.

◆ P_F

#define P_F   (32 * 5)

Порт ввода/вывода F.

◆ P_G

#define P_G   (32 * 6)

Порт ввода/вывода G.

◆ P_H

#define P_H   (32 * 7)

Порт ввода/вывода H.

◆ P_I

#define P_I   (32 * 8)

Порт ввода/вывода I.

Перечисления

◆ eGpioInterruptMode

Элементы перечислений
eintPositiveEdge 

Внешнее прерывание сработает по переднему фронту импульса.

eintNegativeEdge 

Внешнее прерывание сработает по заднему фронту импульса.

eintHighLevel 

Внешнее прерывание сработает по высокому уровню сигнала.

eintLowLevel 

Внешнее прерывание сработает по низкому уровню сигнала.

eintDoubleEdge 

Внешнее прерывание сработает по обоим фронтам сигнала.

227  {
228  eintPositiveEdge = 0x0,
229  eintNegativeEdge = 0x1,
230  eintHighLevel = 0x2,
231  eintLowLevel = 0x3,
232  eintDoubleEdge = 0x4
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Имя и номер порта из группы макросов описания имён портов.
value0 устанавливает низкий уровень на выходе, 1 – высокий.
Возвращает
Всегда OK.

◆ gpio_from_string()

unsigned gpio_from_string ( const char *  str,
bool ok 
)

Функция получает номер GPIO из строк, содержащих имя порта и номер пина. Стока может быть записана без пробелов, как в документации на процессор, либо в стиле MULTEX-ARM:

bool ok;
gpio = gpio_from_string ("PG1", &ok);
gpio = gpio_from_string ("P_G + 1", &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Имя и номер порта из группы макросов описания имён портов.
value0 устанавливает низкий уровень на выходе линии, 1 — высокий уровень.
Возвращает
Всегда OK.

◆ gpioInterruptConnect()

STATUS gpioInterruptConnect ( unsigned int  gpio,
eGpioInterruptMode  mode,
int  group,
int  priority,
usr_int_proc  routine,
int  parameter 
)

Функция подключает процедуру пользователя в качестве обработчика аппаратного прерывания линии ввода/вывода процессора с помощью функции interruptConnect(). В драйвере реализовано раздельное подключение процедур пользователя на каждую линию (аппаратно для всех линий вызывается один и тот же обработчик драйвера).

Аргументы
gpioИмя и номер порта из группы макросов описания имён портов.
modeРежим генерации прерывания — выбор фронта сигнала, по которому будет сгенерировано прерывание.
groupГруппа, к которой относится прерывание. Рекомендуется выбирать значение из макросов соответствующей группы.
priorityПриоритет прерывания внутри группы. Рекомендуется выбирать значение из макросов соответствующей группы.
routineПроцедура, которую требуется подключить в качестве обработчика.
parameterПараметр пользовательской процедуры обработчика прерывания.
Возвращает
OK при успешном выполнении, иначе ERROR.

◆ gpioInterruptDisconnect()

STATUS gpioInterruptDisconnect ( unsigned int  gpio)

Отключается только обработка данной линии в контроллере внешних прерываний. Само прерывание IRQ остаётся активным, так как в контроллере к нему могут быть подключены другие линии.

Аргументы
gpioИмя и номер порта из группы макросов описания имён портов.
Возвращает
OK при успешном выполнении, иначе ERROR.