Udostępnij przez


Przerwania GPIO

Niektóre uniwersalne kontrolery we/wy (GPIO) mogą skonfigurować swoje wyprowadzenia GPIO, aby działały jako wejścia żądań przerwania. Wejścia żądania przerwania są aktywowane przez urządzenia peryferyjne, które są fizycznie połączone z wyprowadzeniami GPIO. Sterowniki dla tych kontrolerów GPIO mogą włączać, wyłączać, maskować, odmaskowywać i czyścić żądania przerwania dla poszczególnych pinów GPIO.

Obsługa przerwań GPIO jest opcjonalna. Rozszerzenie struktury GPIO (GpioClx) nie wymaga kontrolerów GPIO do obsługi przerwań GPIO.

W tym dziale

Temat Opis

Przerwania pierwotne i wtórne

Obsługa przerwań GPIO jest z natury procesem dwuetapowym. Przerwanie z kontrolera we/wy ogólnego przeznaczenia (GPIO), które powoduje uruchomienie przez rozszerzenie struktury GPIO (GpioClx) procedury obsługi przerwań (ISR), jest nazywane podstawowym przerwaniem. Ten isR mapuje przerywanie wyprowadzenia GPIO do globalnego przerwania systemu (GSI) i przekazuje ten GSI do warstwy abstrakcji sprzętu (HAL). HAL generuje pomocnicze przerwanie, aby uruchomić drugi ISR, który jest logicznie połączony z wyprowadzeniem GPIO przez ten GSI. Ten proces jest pokazany na diagramie w przeglądzie obsługi sterowników GPIO.

GPIO-Based przerwanie zasobów

Sterowniki urządzeń peryferyjnych, które wysyłają przerwania do wyprowadzeń GPIO (we/wy ogólnego przeznaczenia), uzyskują przerwania GPIO jako abstrakcyjne zasoby przerwań systemu Windows. Sterowniki w ramach struktury sterowników trybu jądra (KMDF) otrzymują te zasoby poprzez funkcje zwrotne zdarzenia EvtDevicePrepareHardware.

Passive-Level ISR

Począwszy od systemu Windows 8, sterowniki Kernel-Mode Driver Framework (KMDF) i User-Mode Driver Framework (UMDF) mogą opcjonalnie zarejestrować swoje procedury obsługi przerwania (ISR) do działania na poziomie pasywnym.

Interrupt-Related wywołania zwrotne

Opcjonalnie, sterownik dla kontrolera we/wy ogólnego przeznaczenia (GPIO) może zapewnić obsługę przerwań GPIO. Aby obsługiwać przerwania GPIO, sterownik kontrolera GPIO implementuje zestaw funkcji wywołania zwrotnego w celu zarządzania tymi przerwaniami. Sterownik zawiera wskaźniki do tych funkcji wywołania zwrotnego w pakiecie rejestracyjnym, który sterownik dostarcza, gdy rejestruje się jako klient rozszerzenia platformy GPIO (GpioClx).

Synchronizacja przerwań dla sterowników kontrolerów GPIO

Sterowniki kontrolera GPIO mogą wywoływać GPIO_CLX_AcquireInterruptLock i GPIO_CLX_ReleaseInterruptLock metody uzyskiwania i zwalniania blokad przerwania, które są implementowane wewnętrznie przez rozszerzenie struktury GPIO (GpioClx). Kod sterownika uruchamiany w środowisku IRQL = PASSIVE_LEVEL może wywołać te metody w celu synchronizacji z procedurą usługi przerwania (ISR) w GpioClx. GpioClx dedykuje oddzielną blokadę przerwania do każdej grupy wyprowadzeń w ramach kontrolera GPIO.

Włączanie i wyłączanie dzielonych przerwań GPIO

W niektórych przypadkach linie przerwań żądań z dwóch lub więcej urządzeń peryferyjnych mogą łączyć się z tym samym fizycznym pinem GPIO. Pin GPIO dla współdzielonej linii przerwania jest zwykle skonfigurowany dla przerwań wyzwalanych poziomem.

Maski przerwań GPIO

Wyprowadzenia we/wy ogólnego przeznaczenia (GPIO), które są skonfigurowane jako wejścia przerwań, mogą być zamaskowane i odmaskowane, a także włączane i wyłączane.