Главная » Микроконтроллеры
Призовой фонд
на февраль 2021 г.
1. 1500 руб
Сайт Паяльник
2. Мультиметр ANENG M118A
Сайт Паяльник
3. 350 руб.
От пользователей


Набор smd конденсаторов 0805, 36 значений номиналов, 720 шт.

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

AVR-программатор USB ASP
AVR-программатор USB ASP
ELM327 OBD II — адаптер с поддержкой CAN Набор для сборки - LED лампа
вверх