Главная » Статьи » Пример 2 – использование линий GPIO: джойстик

Пример 2 – использование линий GPIO: джойстик

В данном упражнении мы включим светодиод после наклона джойстика.  Схема подключения светодиодов и джойстика к микроконтроллеру следующая:

Основная функция программы показана в примере 1.

Пример 1. Основная функция программы

int main (void)
{
// Конфигурация GPIO
GPIO_Configuration ();
while (1)
{
if (GPIO_ReadInputDataBit (GPIOE, JOY_R) == 0)
GPIO_ResetBits (GPIOE, GPIO_Pin_15);
else
GPIO_SetBits (GPIOE, GPIO_Pin_15);
if (GPIO_ReadInputDataBit (GPIOE, JOY_L) == 0)
GPIO_ResetBits (GPIOE, GPIO_Pin_14);
else
GPIO_SetBits (GPIOE, GPIO_Pin_14);
}
}

Как видно в бесконечном цикле, проверяется состояние линий 11 и 12 порта E. При обнаружении низкого уровня на этих линиях загорается соответствующий светодиод. Светодиод D1 подключен к линии 14 порта E (PE14), светодиод D2 подключен к линии 15 порта E (PE15). Светодиоды подсвечиваются при низком напряжении на линии, что можно получить с помощью функции:

GPIO_ResetBits (имя_порта, номера_строки для сброса)

Функция GPIO_Configuration () устанавливает порты ввода/вывода в соответствующий режим работы. В нашем случае необходимо установить линии 14 и 15 порта E в режим вывода, в то время как линии 11 и 12 этого порта должны быть установлены в качестве входных линий. Это делается с помощью:

// Конфигурация светодиодных выводов
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed ​​= GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init (GPIOE, & GPIO_InitStructure);
// Настройка выводов джойстика
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 |
GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed ​​= GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init (GPIOE, & GPIO_InitStructure);

Кроме того, необходимо подключить тактовый сигнал к модулю портов ввода/вывода (по умолчанию тактовый сигнал отключен, для экономии энергии):

RCC_APB2PeriphClockCmd
(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);

Для скачивания

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*