LPC

Работа с портами ввода/вывода LPC1114. Библиотека gpio.c.

 Для удобства работы со своими микроконтроллерами, NXP предоставляет несколько библиотек периферийных устройств. В состав этих библиотек включены функции, реализующие работу с оборудованием на более высоком уровне, чем это делается с помощью прямого программирования регистров. Для работы с портами ввода вывода используется библиотека gpio.c, описание функций которой приведено ниже.  

Фактически библиотека gpio.c содержит функции высокого уровня, осуществляющие доступ к регистрам микроконтроллера LPC1114. Для удобства пользователя, все функции работают с отдельными битами. В описании функций используется несколько переменных. Наиболее часто встречаются следующие:

  • portNum – номер используемого порта.
  • bitPosi – номер бита с которым производится работа
  • bitVal – значение бита

Все переменные имею тип uint32_t, который является обозначением беззнакового целого - unsigned int.

1. Инициализация портов ввода вывода

GPIOInit(void)

Выполняет подключение модуля GPIO к шине AHB. Обязательна к применению перед началом работы с портами. 

 

2. Обработчики прерываний

PIOINT0_IRQHandler(void);

PIOINT1_IRQHandler(void);

PIOINT2_IRQHandler(void);

PIOINT3_IRQHandler(void);

Каждый из обработчиков прерываний работает с двумя внешними переменными: gpiox_counter и px_1_counter, где x – порта. При возникновении прерывания по любой линии порта, счетчик gpiox_counter увеличивается на 1. В случае, если прерывание генерируется по линии 1, также инкрементируется px_1_counter.

 

3. Настройка прерывания

GPIOSetInterrupt(portNum, bitPosi, sense, single, event)

Функция используется при необходимости настройки прерывания. Имеет следующие параметры:

Sense – тип логики прерывания. 0- фронту, 1 – по уровню.

Single – тип формирования прерывания. 0 – определяется переменной event, 1 прерывание формируется по двум фронтам, то есть импульсу.

Event – событие прерывания. 0 - задний фронт или низкий уровень, 1 - передний фронт или высокий уровень. (уровень или фронт определяется переменной Sense)

 

4. Разрешение прерывания

GPIOIntEnable(portNum, bitPosi)

Функция разрешает генерацию прерываний.

 

5. Запрет прерываний

GPIOIntDisable( uint32_t portNum, uint32_t bitPosi)

Функция запрещает генерацию прерываний

 

6. Флаг прерывания

GPIOIntStatus(portNum, bitPosi)

Функция возвращает 0 при отсутствии прерывания по выбранной линии и 1 при его наличии.

 

7. Сброс флага прерывания

GPIOIntClear(portNum, bitPosi)

 

8. Функция установки отдельного бита.

GPIOSetValue(portNum, bitPosi, bitVal) - установка значения бита.

 

9. Функция направления работы порта.

GPIOSetDir(portNum, bitPosi, dir) – установка направления работы линии. Задается в переменной dir. Если последняя имеет значение 0, то линия работает как вход, значение 1 переключает линию на выход. 


Еще по теме:

Работа с портами ввода/вывода LPC1114. 

Работа с портами ввода/вывода LPC1114. Пример.

You have no rights to post comments