1/18

Среда разработки. Создание проекта в среде разработки. Использование портов ввода/вывода

1.

Знакомство со средой разработки.
Создание проекта в среде разработки.
Использование портов ввода/вывода.
Лабораторная работа №1

2. Маркировка

Отладочная плата Stm32
Маркировка
2

3. Описание

Порты ввода/вывода
Описание
В системе STM32:
• Порты обозначаются GPIOA, GPIOB, GPIOC и т.д. На схеме
микроконтроллера соответствующие портам выводы обозначаются
PA0-PA15, PB0-PB15, PC0-PC15…
• Порты 16ти разрядные, т.е. у каждого порта 16 выводов.
• Режим и состояние каждого вывода могут быть установлены отдельно,
независимо от других выводов.
3

4. Режимы порта ввода/вывода

Порты ввода/вывода
Режимы порта ввода/вывода
Input floating – вход без подтягивающего резистора, брошенный в воздухе
вход.
Input pull-up – вход с подтягивающим резистором, подключенным к питанию
микроконтроллера.
Input pull-down - вход с подтягивающим резистором, подключенным к
общему проводу (земле).
Analog – аналоговый вход ( вход АЦП, компараторов и т.п.).
Output open-drain – выход с открытым стоком. Функционально аналогичен
выходу с открытым коллектором. При низком логическом уровне замыкает
вывод на землю, при высоком – бросает в воздухе.
Output push-pull – обычный активный выход. При низком логическом уровне
напряжение на выводе равно 0, при высоком – напряжение близко к
напряжению питания микроконтроллера, обычно + 3 В.
Alternate function push-pull – альтернативная функция вывода в обычном
(активном) режиме.
Alternate function open-drain – альтернативная функция вывода в режиме
открытый сток.
4

5. Режимы порта ввода/вывода

Порты ввода/вывода
Режимы порта ввода/вывода
5

6. Режимы порта ввода/вывода

Порты ввода/вывода
Режимы порта ввода/вывода
6

7. Конфигурация

Порты ввода/вывода
Конфигурация
Текст слайда
7

8. Программное управление

Порты ввода/вывода
Программное управление
Для каждого порта (16 выводов) есть два 32х разрядных регистра
конфигурации. Они образуют 64 битный регистр конфигурации порта.
Младший регистр конфигурации портов GPIOx_CRL (Port configuration
register low)
Старший регистр конфигурации портов GPIOx_CRH (Port configuration
register high)
8

9. Программное управление

Порты ввода/вывода
Программное управление
На каждый вывод отводится 4 бита, которые делятся на 2 битные поля режима и
конфигурации.
Поле режима определяет направление работы вывода – вход или выход. В случае
выхода оно задает максимальную частоту передачи выходного сигнала. Очевидно,
это влияет на энергопотребление микроконтроллера.
Биты режима MODE [1 :
0]
Режим
00
Вход
01
Выход, синхронизация 10 мГц
10
Выход, синхронизация 2 мГц
11
Выход, синхронизация 50 мГц
9

10. Программное управление

Порты ввода/вывода
Программное управление
Поле режима дополняют биты конфигурации.
Конфигурация
Выход общего
назначения
Биты
конфигурации
CNF [1 : 0]
Активный выход
00
Открытый сток
01
Выход
альтернативной
функции
Активный выход
10
Открытый сток
11
Вход
Аналоговый выход
00
Свободный вход
01
Вход, подтяжка к
земле
10
Биты режима
MODE [1 : 0]
01
10
11
00
Вход, подтяжка к
питнию
10

11. Прямое обращение к регистрам

Порты ввода/вывода
Прямое обращение к регистрам
// включаем тактирование портов А и B RCC_APB2ENR
*((unsigned long*)0x40021018) |= 0x18;//b1100
// настраиваем чтобы диод пока не горел, так как он pushed up
*(unsigned long*)0x4001100C |= (1<<13);
// настраиваем GPIOC13 на выход push-pull
*(unsigned long*)0x40011004 &= ~((1<<23)|(1<<22)|(1<<20));
*(unsigned long*)0x40011004 |= (1<<21);
// настроим на вход GPIOA_CRH PIN1 и подтянем его к питанию
*(unsigned long*)0x40010C04 &= ~((1<<26)|(1<<25)|(1<<24));
*(unsigned long*)0x40010C04 |= (1<<27);
*(unsigned long*)0x40010C0C &= ~(1<<14); // pull-down
11

12. Библиотека CMSIS

Порты ввода/вывода
Библиотека CMSIS
// Включаем тактирование недостающих портов А и В (C уже включен)
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN; // | RCC_APB2ENR_IOPCEN;
// сброс состояния порта
GPIOC->CRH &=~(GPIO_CRH_CNF14_1 | GPIO_CRH_CNF14_0 | GPIO_CRH_MODE14_1 | GPIO_CRH_MODE14_0 |
GPIO_CRH_CNF15_1 | GPIO_CRH_CNF15_0 | GPIO_CRH_MODE15_1 | GPIO_CRH_MODE15_0);
GPIOA->CRL &=~(GPIO_CRL_CNF4_1 | GPIO_CRL_CNF4_0 | GPIO_CRL_MODE4_1 | GPIO_CRL_MODE4_0 |
GPIO_CRL_CNF7_1 | GPIO_CRL_CNF7_0 | GPIO_CRL_MODE7_1 | GPIO_CRL_MODE7_0);
// Настройка кнопки 3, как вход с подтяжкой к земле
GPIOA->CRL |= GPIO_CRL_CNF7_1;
GPIOA->ODR &=~GPIO_ODR_ODR7; //
// Настройка кнопки 1,2,4, как вход с подтяжкой к плюсу
GPIOC->CRH |= GPIO_CRH_CNF14_1;
GPIOC->ODR |= GPIO_ODR_ODR14; //кнопка 1
12

13. Библиотека SPL

Порты ввода/вывода
Библиотека SPL
• PPP – акроним для периферии, например GPIO, ADC, TIM.
• Для настройки каждого периферийного устройства используется
структура PPP_InitTypeDef, которая передается в функцию
PPP_Init() через указатель.
• Для деинициализации (установки значения по умолчанию)
можно использовать функцию PPP_DeInit().
• Функция, позволяющая включить или отключить периферию,
именуется PPP_Cmd();
• Функция включения/отключения прерывания именуется
PPP_ITConfig
13

14. Gpio_InitTypeDef

Порты ввода/вывода
Gpio_InitTypeDef
GPIO_Pin (номер вывода):
• GPIO_Pin_0 — вывод 0;
• GPIO_Pin_1— вывод 1;
• ..
• GPIO_Pin_15 — вывод 15;
• GPIO_Pin_All — все выводы;
GPIOSpeed
• GPIO_Speed_10MHz
• GPIO_Speed_2MHz
• GPIO_Speed_50MHz
14

15. Gpio_InitTypeDef

Порты ввода/вывода
Gpio_InitTypeDef
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 — симметричный выход альтернативной
функции
15

16. Подключение программатора

Порты ввода/вывода
Подключение программатора
16

17. Gpio_InitTypeDef

Порты ввода/вывода
Gpio_InitTypeDef
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 — симметричный выход альтернативной
функции
17

18. Документация

Порты ввода/вывода
Документация
18
English     Русский Правила