Функции управляют портами ввода вывода: задают конфигурацию, считывают и устанавливают состояния выводов.
__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);
__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) {
// правильно
}
__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);
__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) {
// правильно
}
__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);
__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 ) {
// правильно
}
__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);
__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 ) {
// правильно
}
__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 ).
Возвращаемого значения нет.
__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.
__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked (GPIO_TypeDef * GPIOx)
Возвращает 1, если хотя бы один вывод порта заблокирован от изменения конфигурации.
- GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
Возвращает: 1 или 0.
__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort (GPIO_TypeDef * GPIOx)
Возвращает значение регистра ввода данных (IDR).
- GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
Возвращает: значение регистра ввода данных (IDR).
Пример чтения порта B.
uint32_t portB= LL_GPIO_ReadInputPort(GPIOB);
__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 высокий уровень
}
__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef * GPIOx, uint32_t PortValue)
Загружает слово в регистр вывода данных порта.
- GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
- PortValue – данное для записи в порт.
Не возвращает ничего.
Пример записи в порт B.
LL_GPIO_WriteOutputPort(GPIOB, 0xfff0);
__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort (GPIO_TypeDef * GPIOx)
Возвращает значение регистра вывода данных порта.
- GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
Возвращает – значение регистра вывода данных порта.
uint32_t portB= LL_GPIO_ReadOutputPort (GPIOB);
__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) {
// правильно
}
__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);
__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);
__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);
ErrorStatus LL_GPIO_DeInit (GPIO_TypeDef * GPIOx)
Устанавливает конфигурацию порта в состояние системного сброса.
- GPIOx - порт (GPIOA, GPIOB, GPIOC… ).
Возвращает – сообщение об ошибке:
- SUCCESS – успешно;
- ERROR – ошибка, указан неправильный порт.
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-функций.
void LL_GPIO_StructInit (LL_GPIO_InitTypeDef * GPIO_InitStruct)
Устанавливает все элементы структуры LL_GPIO_InitTypeDef в состояние, соответствующее конфигурации порта после системного сброса.
Не возвращает ничего.