Udostępnij przez


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

W niektórych przypadkach linie przerwań z co najmniej dwóch urządzeń peryferyjnych mogą łączyć się z tym samym fizycznym pinem wejścia/wyjścia ogólnego przeznaczenia (GPIO). Pin GPIO dla współużytkowanej linii przerwań jest zwykle skonfigurowany dla przerwań wyzwalanych poziomem.

Jeśli sterowniki dla tych urządzeń rejestrują swoje procedury obsługi przerwań (ISR), które mają zostać wyzwolone, gdy na tym pinie GPIO zostanie zgłoszone przerwanie, rozszerzenie frameworku GPIO (GpioClx) wywołuje funkcję wywołania zwrotnego CLIENT_EnableInterrupt tylko w przypadku, gdy pierwszy sterownik zarejestruje się dla tego przerwania. Gdy inne sterowniki rejestrują się w celu użycia przerwania GPIO, które jest już włączone, GpioClx wewnętrznie śledzi te rejestracje, ale nie wywołuje nadmiarowo funkcji wywołania zwrotnego CLIENT_EnableInterrupt, aby włączyć to przerwanie. Podobnie GpioClx wywołuje funkcję CLIENT_DisableInterrupt wywołania zwrotnego tylko wtedy, gdy ostatni z tych zarejestrowanych sterowników zwalnia przerwanie.