Доступ до вхідного GPIO в ядрі Linux
- Переконайтеся, що GPIO дійсний чи ні.
- Якщо він дійсний, ви можете запитати GPIO з підсистеми ядра GPIO.
- Встановіть напрямок GPIO як вхід.
- Встановіть інтервал усунення дребезгу.
- Прочитайте GPIO.
- Ви вмикаєте IRQ також для ініціювання краю/рівня, якщо вам це потрібно.
Резюме: як запустити переривання GPIO
- Напишіть ISR, всередині якого ви. …
- Зв'яжіть ISR з правим вектором переривання.
- Налаштуйте подію GPIO, яка має ініціювати переривання. …
- Увімкніть переривання для контакту всередині GPIO. …
- Увімкніть переривання всередині контролера переривань.
Тож, наприклад, якщо я хочу встановити GPIO, мені доведеться:
- Визначте номер лінії GPIO.
- Експортуйте GPIO, записавши його номер у /sys/class/gpio/export.
- Налаштуйте рядок GPIO як вихідний запис у /sys/class/gpio/gpioX/direction.
- Установіть для GPIO запис 1 на /sys/class/gpio/gpioX/value.
Найбільш часто використовуваною бібліотекою для цієї мети є Бібліотека ESP-IDF (Iot Development Framework)., який розробляє та підтримує Espressif (компанія, що виробляє ESP32). Цей код налаштовує контакт GPIO 2 як вихід і встановлює для нього значення High. У цьому випадку світлодіод, підключений до Pin2, увімкнеться.
Переривання може бути викликане програмним шляхом за допомогою інструкції ' int '. Наприклад, системний виклик Linux використовував int $0x80. Отже, якщо ми хочемо викликати переривання IRQ11, програмно ми повинні додати 11 до вектора IRQ0.