Введение
Статья написана на основе этой документации:
STM32F10x Standard Peripherals Library версии 3.5.0
В следующих разделах статьи будет представлено описание функций модуля GPIO и описание структуры GPIO_InitTypeDef
.
Содержание
Обзор функций
В этом разделе, кликнув на имя функции, можно перейти к её подробному описанию.
void GPIO_AFIODeInit(void)
Сбрасывает в начальное состояние регистры альтернативных функций
void GPIO_DeInit(GPIO_TypeDef *GPIOx)
Сбрасывает в начальное состояние регистры GPIOx
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface)
Выбирает Ethernet media interface
void GPIO_EventOutputCmd(FunctionalState NewState)
Разрешает или запрещает событийный выход (Event Output)
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
Выбирает вывод для событийного выхода
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
Назначает вывод GPIO_PinSource
порта GPIO_PortSource
источником внешнего прерывания
void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)
Настраивает порт GPIOx
в соответствии с параметрами из структуры GPIO_InitStruct
void GPIO_StructInit(GPIO_InitTypeDef *GPIO_InitStruct)
Заполняет поля структуры GPIO_InitStruct
значениями по умолчанию
void GPIO_PinLockConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Защищает настройки выводов
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
Разрешает или запрещает переназначение GPIO_Remap
uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx)
Возвращает входные данные порта GPIOx
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает входное состояние вывода GPIO_Pin
порта GPIOx
uint16_t GPIO_ReadOutputData(GPIO_TypeDef *GPIOx)
Возвращает выходные данные порта GPIOx
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает выходное состояние вывода GPIO_Pin
порта GPIOx
void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 0 выходному состоянию выводов GPIO_Pin
порта GPIOx
void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 1 выходному состоянию выводов GPIO_Pin
порта GPIOx
void GPIO_Write(GPIO_TypeDef *GPIOx, uint16_t PortVal)
Присваивает значение PortVal
выходным данным порта GPIOx
void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
Присваивает значение BitVal
выходному состоянию вывода GPIO_Pin
порта GPIOx
Подробное описание функций
void GPIO_AFIODeInit(void)
Сбрасывает в начальное состояние регистры альтернативных функций порта
void GPIO_DeInit(GPIO_TypeDef *GPIOx)
Сбрасывает в начальное состояние регистры порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface)
Выбирает Ethernet media interface
Аргументы:
GPIO_ETH_MediaInterface
: Media Interface. Варианты значений:
GPIO_ETH_MediaInterface_MII
: Режим MII
GPIO_ETH_MediaInterface_RMII
: Режим RMII
void GPIO_EventOutputCmd(FunctionalState NewState)
Разрешает или запрещает событийный выход (Event Output)
Аргументы:
NewState
: Новое состояние событийного выхода. Варианты значений:
ENABLE
: разрешен
DISABLE
: запрещен
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, u8 GPIO_PinSource)
Выбирает вывод для событийного выхода
Аргументы:
GPIO_PortSource
: Порт. Варианты значений:
GPIO_PortSourceGPIOx
: где x = (A…E)
GPIO_PinSource
: Вывод порта. Варианты значений:
GPIO_PinSourceX
: где X = (0…15)
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, u8 GPIO_PinSource)
Назначает вывод GPIO_PinSource
порта GPIO_PortSource
источником внешнего прерывания
Аргументы:
GPIO_PortSource
: Порт. Варианты значений:
GPIO_PortSourceGPIOx
: где x = (A…G)
GPIO_PinSource
: Вывод порта и одновременно номер X внешнего прерывания. Варианты значений:
GPIO_PinSourceX
: где X = (0…15)
void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)
Настраивает порт GPIOx
в соответствии с параметры из структуры GPIO_InitStruct
Аргументы:
GPIOx
: Порт. Варианты значений:
GPIO_InitStruct
: Структуру типа GPIO_InitTypeDef
, содержащая настройки порта.
void GPIO_PinLockConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Защищает настройки выводов
Аргументы:
GPIOx
: Порт. Варианты значений:
GPIO_Pin
: Выводы, одно значение или их комбинация (с помощью оператора или |):
GPIO_Pin_x
: где x = (0…15)
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
Разрешает или запрещает переназначение GPIO_Remap
Аргументы:
NewState
: Состояние переназначения. Значения аргумента:
ENABLE
: Разрешение
DISABLE
: Запрет
GPIO_Remap
: Переназначение. Значения аргумента:
GPIO_Remap_PPP
, где PPP
:
SPI1
SPI3
I2C1
USART1
USART2
USART3
PD01
TIM5CH4_LSI
ADC1_ETRGINJ
ADC1_ETRGREG
ADC2_ETRGINJ
ADC2_ETRGREG
ETH
CAN2
SWJ_NoJTRST
SWJ_JTAGDisable
SWJ_Disable
TIM2ITR1_PTP_SOF
PTP_PPS
CEC
TIM1_DMA
TIM4
TIM9
TIM10
TIM11
TIM13
TIM14
TIM15
TIM16
TIM17
FSMC_NADV
TIM67_DAC_DMA
TIM12
, MISC
GPIO_FullRemap_PPP
, где PPP
:
GPIO_PartialRemap_PPP
, где PPP
:
GPIO_PartialRemap1_PPP
, где PPP
:
GPIO_PartialRemap2_PPP
, где PPP
:
uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx)
Возвращает входные данные порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает входное состояние вывода GPIO_Pin
порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
GPIO_Pin
: Вывод порта. Значение:
GPIO_Pin_x
: где x = (0…15)
Возвращаемое значение: входное состояние вывода, (uint8_t)Bit_SET
или (uint8_t)Bit_RESET
.
u16 GPIO_ReadOutputData(GPIO_TypeDef *GPIOx)
Возвращает выходные данные порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
Возвращаемое значение: выходные данные порта GPIOx
.
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает выходное состояние вывода GPIO_Pin
порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
GPIO_Pin
: Вывод порта. Варианты значений:
GPIO_Pin_x
: где x = (0…15)
Возвращаемое значение: выходное состояние вывода, (uint8_t)Bit_SET
или (uint8_t)Bit_RESET
.
void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 0 выходному состоянию выводов GPIO_Pin
порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
GPIO_Pin
: Выводы, одно значение или их комбинация (с помощью оператора или |):
GPIO_Pin_x
: где x = (0…15)
void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 1 выходному состоянию выводов GPIO_Pin
порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
GPIO_Pin
: Выводы, одно значение или их комбинация (с помощью оператора или |):
GPIO_Pin_x
: где x = (0…15)
void GPIO_StructInit(GPIO_InitTypeDef *GPIO_InitStruct)
Заполняет поля структуры GPIO_InitStruct
значениями по-умолчанию:
GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All;
GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
При вызове функции GPIO_Init()
и передачи ей указателя на структуру, заполненную по-умолчанию, все выводы порта GPIOx
, настроятся в режим плавающего входа с максимальной частотой 2 МГц.
Аргументы:
GPIO_InitStruct
: Структура типа GPIO_InitTypeDef
, содержащая настройки порта
void GPIO_Write(GPIO_TypeDef *GPIOx, uint16_t PortVal)
Присваивает значение PortVal
выходным данным порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
- PortVal: Значение, записываемое в выходной регистр порта
GPIOx
void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
Присваивает значение BitVal
выходному состоянию вывода GPIO_Pin
порта GPIOx
Аргументы:
GPIOx
: Порт. Варианты значений:
GPIO_Pin
: Вывод. Варианты значений:
GPIO_Pin_x
: где x = (0…15)
BitVal
: Значение, присваиваемое биту GPIO_Pin
выходного регистра порта GPIOx
. Варианты значений:
Bit_RESET
: логический 0
Bit_SET
: логическая 1
Описание структуры GPIO_InitTypeDef
GPIO_InitTypeDef
— тип структуры данных для настройки выводов портов. Для настройки выводов порта необходимо вызвать функцию GPIO_Init()
, передав ей указатель на переменную типа GPIO_InitTypeDef
. На практике настройка выводов выглядит так:
// Объявляем структуру для настройки вывода
GPIO_InitTypeDef GPIO_InitStruct;
// Настройки: вывод 0 и 1 как двухтактный выход с частотой 50 МГц
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; // Режим
GPIO_InitStruct.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1); // Выводы
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // Макс. частота
// Настроить выводы порта А
GPIO_Init(GPIOA, &GPIO_InitStruct);
или, тоже самое:
GPIO_InitTypeDef GPIO_InitStruct = {GPIO_Pin_0 | GPIO_Pin_1, GPIO_Speed_50MHz, GPIO_Mode_Out_PP};
GPIO_Init(GPIOA, &GPIO_InitStruct);
Поля структуры:
GPIOMode_TypeDef GPIO_Mode
: Режим работы порта. Варианты значений:
GPIO_Mode_AIN
: Аналоговый вход
GPIO_Mode_IN_FLOATING
: Плавающий вход
GPIO_Mode_IPD
: Вход с подтяжкой к земле
GPIO_Mode_IPU
: Вход с подтяжкой к питанию
GPIO_Mode_Out_OD
: Выход с открытым стоком
GPIO_Mode_Out_PP
: Двухтактный выход
GPIO_Mode_AF_OD
: Альтернативный выход с открытым стоком
GPIO_Mode_AF_PP
: Альтернативный двухтактный выход
uint16_t GPIO_Pin
: Выводы порта. Поле может принимать одно из значений или их комбинацию (с помощью оператора или |):
GPIO_Pin_x
: Вывод x, где x = (0…15)
GPIO_Pin_All
: все выводы
GPIOSpeed_TypeDef GPIO_Speed
: Максимальная частота выходного сигнала. Варианты значений:
GPIO_Speed_2MHz
: 2 МГц
GPIO_Speed_10MHz
: 10 МГц
GPIO_Speed_50MHz
: 50 МГц
Конец статьи.
Понравилось это:
Нравится Загрузка...