LL GPIO Generic Driver. Функции управления портами ввода.

 


 

Функции управляют портами ввода вывода: задают конфигурацию, считывают и устанавливают состояния выводов.

 

LL_GPIO_SetPinMode

__STATIC_INLINE void LL_GPIO_SetPinMode (GPIO_TypeDef * GPIOx, uint32_t Pin, uint32_t Mode)

Функция задает режим вывода.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – вывод (LL_GPIO_PIN_0 … LL_GPIO_PIN_15).
  • Mode – режим вывода:
    • LL_GPIO_MODE_ANALOG – аналоговый вход.
    • LL_GPIO_MODE_FLOATING –свободный вход.
    • LL_GPIO_MODE_INPUT  -вход с подтягивающим резистором.
    • LL_GPIO_MODE_OUTPUT – выход.
    • LL_GPIO_MODE_ALTERNATE – альтернативная функция.

Возвращаемого значения нет.

Пример установки вывода.

// конфигурация вывода PB12 на вход
LL_GPIO_SetPinMode(GPIOB, LL_GPIO_PIN_12, LL_GPIO_MODE_INPUT);
// конфигурация вывода PB13 на выход 
LL_GPIO_SetPinMode(GPIOB, LL_GPIO_PIN_13, LL_GPIO_MODE_OUTPUT);

 

LL_GPIO_GetPinMode

__STATIC_INLINE uint32_t LL_GPIO_GetPinMode (GPIO_TypeDef * GPIOx, uint32_t Pin)

Возвращает режим вывода.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – вывод (LL_GPIO_PIN_0 … LL_GPIO_PIN_15).

Возвращает состояние режима вывода:

  • LL_GPIO_MODE_ANALOG – аналоговый вход.
  • LL_GPIO_MODE_FLOATING – свободный вход.
  • LL_GPIO_MODE_INPUT  -вход с подтягивающим резистором.
  • LL_GPIO_MODE_OUTPUT – выход.
  • LL_GPIO_MODE_ALTERNATE – альтернативная функция.

Пример проверки режима вывода PB13.

if(LL_GPIO_GetPinMode(GPIOB, LL_GPIO_PIN_12) == LL_GPIO_MODE_INPUT) {
    // правильно
}

 

LL_GPIO_SetPinSpeed

__STATIC_INLINE void LL_GPIO_SetPinSpeed (GPIO_TypeDef * GPIOx, uint32_t Pin, uint32_t Speed)

Устанавливает скорость переключения выхода.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – вывод (LL_GPIO_PIN_0 … LL_GPIO_PIN_15).
  • Speed– скорость переключение выхода:
    • LL_GPIO_SPEED_FREQ_LOW – низкая;
    • LL_GPIO_SPEED_FREQ_MEDIUM – средняя;
    • LL_GPIO_SPEED_FREQ_HIGH – высокая.

Функция ничего не возвращает.

Пример установки низкой скорости для вывода PB13.

LL_GPIO_SetPinSpeed(GPIOB, LL_GPIO_PIN_13, LL_GPIO_SPEED_FREQ_LOW);

 

LL_GPIO_GetPinSpeed

__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed (GPIO_TypeDef * GPIOx, uint32_t Pin)

Возвращает значение скорости переключения выхода.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – вывод (LL_GPIO_PIN_0 … LL_GPIO_PIN_15).

Возвращает значение скорости:

  • LL_GPIO_SPEED_FREQ_LOW – низкая;
  • LL_GPIO_SPEED_FREQ_MEDIUM – средняя;
  • LL_GPIO_SPEED_FREQ_HIGH – высокая.

Пример:

// проверка скорости PB13
if(LL_GPIO_GetPinMode(GPIOB, LL_GPIO_PIN_13) == LL_GPIO_SPEED_FREQ_LOW) {
    // правильно
}

 

LL_GPIO_SetPinOutputType

__STATIC_INLINE void LL_GPIO_SetPinOutputType (GPIO_TypeDef * GPIOx, uint32_t Pin, uint32_t OutputType)

Устанавливает для вывода тип выхода.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – вывод (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).
  • OutputType – тип выходного каскада:
    • LL_GPIO_OUTPUT_PUSHPULL – активный (двухтактный) выход;
    • LL_GPIO_OUTPUT_OPENDRAIN – открытый сток.

Функция ничего не возвращает.

LL_GPIO_SetPinOutputType(GPIOB, LL_GPIO_PIN_13, LL_GPIO_OUTPUT_PUSHPULL);

 

LL_GPIO_GetPinOutputType

__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType (GPIO_TypeDef * GPIOx, uint32_t Pin)

Функция возвращает значение типа выхода.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – вывод (LL_GPIO_PIN_0 … LL_GPIO_PIN_15).

Возвращает тип выхода:

  • LL_GPIO_OUTPUT_PUSHPULL – активный (двухтактный) выход;
  • LL_GPIO_OUTPUT_OPENDRAIN – открытый сток.

Пример проверки типа выхода PB13.

if(LL_GPIO_GetPinMode(GPIOB, LL_GPIO_PIN_13) == LL_GPIO_OUTPUT_PUSHPULL ) {
    // правильно
}

 

LL_GPIO_SetPinPull

__STATIC_INLINE void LL_GPIO_SetPinPull (GPIO_TypeDef * GPIOx, uint32_t Pin, uint32_t Pull)

Функция задает вариант подключения подтягивающего резистора.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – вывод (LL_GPIO_PIN_0 … LL_GPIO_PIN_15).
  • Pull – вариант подключения подтягивающего резистора:
    • LL_GPIO_PULL_DOWN – к общему проводу (земле);
    • LL_GPIO_PULL_UP – к шине питания.

Ничего не возвращает.

Пример подключения подтягивающего резистора к шине питания.

LL_GPIO_SetPinPull(GPIOB, LL_GPIO_PIN_12, LL_GPIO_PULL_UP);

 

LL_GPIO_GetPinPull

__STATIC_INLINE uint32_t LL_GPIO_GetPinPull (GPIO_TypeDef * GPIOx, uint32_t Pin)

Возвращает тип подключения подтягивающего резистора.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация)выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15).

Функция возвращает тип подключения подтягивающего резистора:

  • LL_GPIO_PULL_DOWN – к общему проводу (земле);
  • LL_GPIO_PULL_UP – к шине питания.

Пример проверки.

if(LL_GPIO_GetPinPull(GPIOB, LL_GPIO_PIN_12) == LL_GPIO_PULL_UP  ) {
    // правильно
}

 

LL_GPIO_LockPin

__STATIC_INLINE void LL_GPIO_LockPin (GPIO_TypeDef * GPIOx, uint32_t PinMask)

Блокировка конфигурации выводов порта.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация) выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).

Возвращаемого значения нет.

 

LL_GPIO_IsPinLocked

__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked (GPIO_TypeDef * GPIOx, uint32_t PinMask)

Функция возвращает значение 1, если все выводы, указанные в аргументе Pin, заблокированы.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация) выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).

Возвращает: 1 (все выводы заблокированы) или 0.

 

LL_GPIO_IsAnyPinLocked

__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked (GPIO_TypeDef * GPIOx)

Возвращает 1, если хотя бы один вывод порта заблокирован от изменения конфигурации.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).

Возвращает: 1 или 0.

 

LL_GPIO_ReadInputPort

__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort (GPIO_TypeDef * GPIOx)

Возвращает значение регистра ввода данных (IDR).

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).

Возвращает: значение регистра ввода данных (IDR).

Пример чтения порта B.

uint32_t portB= LL_GPIO_ReadInputPort(GPIOB);

 

LL_GPIO_IsInputPinSet

__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet (GPIO_TypeDef * GPIOx, uint32_t PinMask)

Возвращает 1 в случае, если все выводы, указанные в аргументе Pin находятся в состоянии 1.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация) выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).

Возвращает: 1 (все заданные выводы = 1) или 0.

Пример проверки состояния бита вывода PB10.

if( (LL_GPIO_ReadInputPort(GPIOB) & (1 << 10)) != 0 ) {
    // на выводе PB10 высокий уровень
}

 

LL_GPIO_WriteOutputPort

__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef * GPIOx, uint32_t PortValue)

Загружает слово в регистр вывода данных порта.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • PortValue – данное для записи в порт.

Не возвращает ничего.

Пример записи в порт B.

LL_GPIO_WriteOutputPort(GPIOB, 0xfff0);

 

LL_GPIO_ReadOutputPort

__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort (GPIO_TypeDef * GPIOx)

Возвращает значение регистра вывода данных порта.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).

Возвращает – значение регистра вывода данных порта.

uint32_t portB= LL_GPIO_ReadOutputPort (GPIOB);

 

LL_GPIO_IsOutputPinSet

__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet (GPIO_TypeDef * GPIOx, uint32_t PinMask)

Возвращает 1 в случае, если все указанные в аргументе Pin разряды регистра вывода данных порта равны 1.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация) выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).

Возвращает – 1 (все указанные биты в 1) или 0.

Пример проверки, что биты 10 и 14 равны 1.

if(LL_GPIO_IsOutputPinSet(GPIOB, LL_GPIO_PIN_10 | LL_GPIO_PIN_14) == 1) {
    // правильно
}

 

LL_GPIO_SetOutputPin

__STATIC_INLINE void LL_GPIO_SetOutputPin (GPIO_TypeDef * GPIOx, uint32_t PinMask)

Устанавливает выводы в высокий уровень для указанного порта.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация) выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).

Не возвращает ничего.

Пример установки выводов PB10 и PB14.

LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_10 | LL_GPIO_PIN_14);

 

LL_GPIO_ResetOutputPin

__STATIC_INLINE void LL_GPIO_ResetOutputPin (GPIO_TypeDef * GPIOx, uint32_t PinMask)

Сбрасывает выводы в низкий уровень для указанного порта.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация) выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).

Не возвращает ничего.

Пример сброса  выводов PB10 и PB14.

LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_10 | LL_GPIO_PIN_14);

 

LL_GPIO_TogglePin

__STATIC_INLINE void LL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint32_t PinMask)

Инвертирует состояние выводов порта.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • Pin – маска (комбинация) выводов  (LL_GPIO_PIN_0 … LL_GPIO_PIN_15, LL_GPIO_PIN_ALL ).

Не возвращает ничего.

Пример инверсии состояния  выводов PB10 и PB14.

LL_GPIO_TogglePin(GPIOB, LL_GPIO_PIN_10 | LL_GPIO_PIN_14);

 

LL_GPIO_DeInit

ErrorStatus LL_GPIO_DeInit (GPIO_TypeDef * GPIOx)

Устанавливает конфигурацию порта в состояние системного сброса.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).

Возвращает – сообщение об ошибке:

  • SUCCESS – успешно;
  • ERROR – ошибка, указан неправильный порт.

 

LL_GPIO_Init

ErrorStatus LL_GPIO_Init (GPIO_TypeDef * GPIOx, LL_GPIO_InitTypeDef * GPIO_InitStruct)

Инициализирует конфигурацию порта согласно параметрам структуры GPIO_InitStruct.

  • GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
  • GPIO_InitStruct – указатель на структуру типа LL_GPIO_InitTypeDef.

Возвращает – сообщение об ошибке:

  • SUCCESS – успешно;
  • ERROR – ошибка, указан неправильный порт.

Структура  LL_GPIO_InitTypeDef:

typedef struct
{
  uint32_t Pin;                  // маска выводов
  uint32_t Mode;              // режим
  uint32_t Speed;             // скорость переключения выходов
  uint32_t OutputType;  // тип выхода
  uint32_t Pull;               // режим подтягивающего резистора
} LL_GPIO_InitTypeDef;

Все элементы структуры имеют формат, аналогичный одноименным аргументам предыдущих LL-функций.

 

LL_GPIO_StructInit

void LL_GPIO_StructInit (LL_GPIO_InitTypeDef * GPIO_InitStruct)

Устанавливает все элементы структуры LL_GPIO_InitTypeDef  в состояние, соответствующее конфигурации порта после системного сброса.

Не возвращает ничего.