STM32F10x SPL: модуль GPIO

Введение

Статья написана на основе этой документации:
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: Порт. Варианты значений:
    • GPIOx: где x = (A…G)


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: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_InitStruct: Структуру типа GPIO_InitTypeDef, содержащая настройки порта.


void GPIO_PinLockConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Защищает настройки выводов
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • 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
      • TIM12MISC
    • GPIO_FullRemap_PPP, где PPP:
      • USART3
      • TIM1
      • TIM2
      • TIM3
    • GPIO_PartialRemap_PPP, где PPP:
      • TIM1
      • TIM3
    • GPIO_PartialRemap1_PPP, где PPP:
      • TIM2
      • CAN1
    • GPIO_PartialRemap2_PPP, где PPP:
      • TIM2
      • CAN1


uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx)
Возвращает входные данные порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)


uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает входное состояние вывода GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • 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: где х = (A…G)

Возвращаемое значение: выходные данные порта GPIOx.



uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Возвращает выходное состояние вывода GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • 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: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • GPIO_Pin: Выводы, одно значение или их комбинация (с помощью оператора или |):
    • GPIO_Pin_x: где x = (0…15)


void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Присваивает лог. 1 выходному состоянию выводов GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • 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: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • PortVal: Значение, записываемое в выходной регистр порта GPIOx


void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
Присваивает значение BitVal выходному состоянию вывода GPIO_Pin порта GPIOx
Аргументы:

  • GPIOx: Порт. Варианты значений:
    • GPIOx: где х = (A…G)
  • 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 МГц

Конец статьи.

Реклама

Автор

Дмитрий Бравиков

Инженер. Электронщик. Программист.

STM32F10x SPL: модуль GPIO: Один комментарий

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s