Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Часть 2: Алгоритм выполнения лабораторной работы




Настройка портов ввода-вывода

Определение подключения светодиодов

Откройте файл «Схема.pdf». Найдите там схемы подключения светодиодов (LED) и кнопки (USER & WAKE-UP Button) (стр. 6). Определите, к каким выводам микроконтроллера подключены светодиоды и кнопка.

Примечание: Порты микроконтроллера называются буквами по порядку латинского алфавита (A, B, C …). Каждый порт включает в себя 16 выводов, нумеруемых арабскими цифрами. Т.е. 12 вывод порта D будет полностью называться PORTD 12.

Включение тактирования

Вся внутренняя периферия микроконтроллера по-умолчанию не имеет тактирования и, как следствие, не работает. Чтобы она заработала, её надо затактировать, т.е. подать на неё тактовый сигнал. Для включения тактирования порта надо написать строку:

 

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);

 

Где х – буква, обозначающая порт.

Настройка порта ввода-вывода

Для настройки порта ввода-вывода надо заполнить структуру. Определяется структура следующим образом:

GPIO_InitTypeDef PORT_init_struct;

Где GPIO_InitTypeDef – тип структуры, PORT_init_struct – название. Название может быть произвольным с некоторыми ограничениями.

Структура имеет следующие параметры:

PORT_init_struct.GPIO_Pin – Определяет номер программируемого вывода.

Записывается так:

PORT_init_struct.GPIO_Pin = GPIO_Pin_x;

Где х – номер программируемого вывода (в рамках данного порта, от 0 до 15).

PORT_init_struct.GPIO_Mode – определяет режим работы вывода (выход или вход).

Записывается, например, так:

PORT_init_struct.GPIO_Mode = GPIO_Mode_OUT; //Вывод определяется

// как выход.

Или

PORT_init_struct.GPIO_Mode = GPIO_Mode_IN; //Вывод определяется

// как вход.

PORT_init_struct.GPIO_Speed – определяет скорость работы вывода.

Например, так:

PORT_init_struct.GPIO_Speed = GPIO_Speed_2MHz;

Остальные 2 параметра записываются следующим образом:

PORT_init_struct.GPIO_OType = GPIO_OType_PP;

PORT_init_struct.GPIO_PuPd = GPIO_PuPd_NOPULL;

После заполнения структура должна выглядеть примерно так:

PORT_init_struct.GPIO_Pin = GPIO_Pin_12;

PORT_init_struct.GPIO_Mode = GPIO_Mode_OUT;

PORT_init_struct.GPIO_Speed = GPIO_Speed_2MHz;

PORT_init_struct.GPIO_OType = GPIO_OType_PP;

PORT_init_struct.GPIO_PuPd = GPIO_PuPd_NOPULL;

Данную структуру надо записать в микроконтроллер с помощью строки:

 

GPIO_Init(GPIOx, &PORT_init_struct);

 

Где х – буква порта, вывод которого программируется.

Данная процедура повторяется для всех программируемых выводов.

Включение светодиода

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

GPIO_SetBits(GPIOx, GPIO_Pin_y)

Где х – Буква порта. y – номер вывода, к которому подключен светодиод.

Выключение светодиода

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

GPIO_ResetBits(GPIOx, GPIO_Pin_y)

Где х – Буква порта. y – номер вывода, к которому подключен светодиод.

Изменение состояния светодиода

Изменение состояния светодиода (т.е. включение, если светодиод был выключен и выключение, если светодиод был включен) производится следующей строкой:

GPIO_ToggleBits(GPIOx, GPIO_Pin_y)

Где х – Буква порта. y – номер вывода, к которому подключен светодиод.

Проверка состояния кнопки

Проверка состояния кнопки производится следующей строкой:

Button_state = GPIO_ReadInputDataBit(GPIOx, GPIO_Pin_y)

Где х – Буква порта. y – номер вывода, к которому подключен светодиод.

Button_state – переменная, в которую записывается 0, если кнопка отжата и 1, если кнопка нажата. Переменную необходимо заранее объявить. Помните, что определение переменных производится в начале функции до использования первого оператора.

Организация задержки

Задержка по времени работы микроконтроллера производится следующим образом:

uint32_t i=0;

for (i=0;i<3000000;i++) {}

Цикл вставляется в то место программы, где требуется остановить на время её выполнение.





Поделиться с друзьями:


Дата добавления: 2017-03-11; Мы поможем в написании ваших работ!; просмотров: 408 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2464 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.