Данная библиотека позволяет подключать клавиатуру PS2 к микроконтроллеру STM32F4.
Для работы необходима линия внешнего прерывания и обычный GPIO вывод. Автор использует PB7 и PA8 на плате Discovery.
Клавиатура после инициализации опрашивается и возвращает ASCII-код клавиши назад. Все ключи, которые будут использоваться, должны быть введены в таблицу в C-файле (сдвиг реализован только для SHIFT).
Примечание: клавиатуре необходимо около 500мс после включения, прежде чем она начнет работать. Клавиатура на самом деле работает с уровнем 5В и возможно потребуется преобразователь на 3.3В (Автор просто подключил к 3.3В и все заработало).
Для работы с прерываниями необходима библиотека "STM32_UB_EXT_INT5TO9".
Схема подключения PS2:
- Линия данных (DATA)
- Не используется
- Земля (GND)
- Питание (+5В)
- Линия тактирования (CLK)
- Не используется
Используемые выводы:
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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- ub_stm32f4_ps2_key_v100_rus.rar (8 Кб)
- Demo_29_PS2_KEY_rus.rar (192 Кб)
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация