Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

STM32F4. Урок 29 - Работа с PS2-клавиатурой

Данная библиотека позволяет подключать клавиатуру PS2 к микроконтроллеру STM32F4.

Для работы необходима линия внешнего прерывания и обычный GPIO вывод. Автор использует PB7 и PA8 на плате Discovery.

Клавиатура после инициализации опрашивается и возвращает ASCII-код клавиши назад. Все ключи, которые будут использоваться, должны быть введены в таблицу в C-файле (сдвиг реализован только для SHIFT).

Примечание: клавиатуре необходимо около 500мс после включения, прежде чем она начнет работать. Клавиатура на самом деле работает с уровнем 5В и возможно потребуется преобразователь на 3.3В (Автор просто подключил к 3.3В и все заработало).

Для работы с прерываниями необходима библиотека "STM32_UB_EXT_INT5TO9".

Схема подключения PS2:

  1. Линия данных (DATA)
  2. Не используется
  3. Земля (GND)
  4. Питание (+5В)
  5. Линия тактирования (CLK)
  6. Не используется

Используемые выводы:

CLK к PB7 (через прерывание 7)
DATA к PA8

Требуемые библиотеки:

Подключаемые модули CooCox-IDE: GPIO
Поддерживаемые библиотеки: STM32_UB_EXT_INT5TO9

Функции:

void UB_PS2_Key_Init(void);        // Инициализация клавиатуры
uint8_t UB_PS2_Key_GetAscii(void); // Читать буфер клавиатуры

Пример использования:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 02.04.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der PS2-Keyboard-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_ps2_key.h"
#include "stm32_ub_led.h"

int main(void)
{
  uint8_t ascii_wert;

  SystemInit(); // Инициализация настроек кварца

  // Инициализация светодиодов
  UB_Led_Init();

  // Инициализация  PS2-клавиатуры
  UB_PS2_Key_Init();

  while(1)
  {
	  // Проверка PS2-клавиатуры
	  ascii_wert=UB_PS2_Key_GetAscii();
	  // Переключить зеленый светодиод при нажатии "а"
	  if(ascii_wert=='a') UB_Led_Toggle(LED_GREEN);

	  // Переключить красный светодиод при нажатии "A"
	  if(ascii_wert=='A') UB_Led_Toggle(LED_RED);

	  // Переключить синий светодиод при нажатии "F1"
	  if(ascii_wert==0x81) UB_Led_Toggle(LED_BLUE);

	  // Переключить оранжевый светодиод при нажатии любой кнопки
	  if(ascii_wert!=0) UB_Led_Toggle(LED_ORANGE);
  }
}

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Программатор Pickit3 Ветрогенератор
вверх