class ExtInt – 외부 이벤트에 인터럽트하도록 I/O 핀 구성¶
STM32 MCU는 외부 인터럽트 컨트롤러(EXTI)를 두 범위로 나눕니다. 라인 0-15는 GPIO 핀에서 구동되고, 15보다 높은 라인은 내부 소스(RTC 알람, RTC 웨이크업, USB 웨이크업 등)에 연결됩니다. 전체 라인 수와 15보다 높은 내부 라인의 매핑은 MCU마다 다릅니다. 정확한 할당에 대해서는 OpenMV Cam의 MCU에 대한 레퍼런스 매뉴얼의 EXTI 섹션을 참조하십시오.
각 GPIO 라인 N은 한 번에 임의의 한 GPIO 포트의 핀 PxN에 의해 구동될 수 있습니다. 예를 들어 라인 0은 PA0, PB0, PC0 또는 포트 A부터 포트 K까지의 다른 임의의 핀 0에 매핑될 수 있지만, 한 번에 하나만 가능합니다.
예시:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
그러면 pin의 모든 하강 에지가 callback을 호출합니다. ExtInt는 GPIO 라인을 입력으로 자동 구성하므로 직접 그렇게 할 필요가 없습니다.
참고
기계식 푸시버튼은 “바운스”하여 한 번의 누름이나 떼기가 종종 여러 에지를 생성합니다. 관련 기법에 대해서는 예를 들어 이 디바운싱 입문서를 참조하십시오.
같은 핀에 두 개의 콜백을 등록하면 예외가 발생합니다.
pin이 정수로 전달되면 내부 인터럽트 라인 중 하나를 식별하는 것으로 간주되며 >= 16이고 MCU의 전체 EXTI 라인 수 미만이어야 합니다. 그 외의 핀 값은 표준 핀 매퍼를 통해 해석됩니다.
IRQ_* 모드 외에도 전환을 프로세서의 이벤트 입력으로 라우팅하는 EVT_RISING, EVT_FALLING, EVT_RISING_FALLING 이벤트 모드가 있습니다(저전력 대기를 위한 WFE 명령어와 함께 사용됨). EVT_* 모드는 Python 콜백을 호출하지 않으며 절전 / 전원 관리 용도로 사용됩니다. 일반적인 애플리케이션 코드는 IRQ_* 모드를 사용해야 합니다.
생성자¶
- class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])¶
ExtInt객체를 생성합니다.pin– 인터럽트를 활성화할 핀.Pin객체, 핀 이름 문자열, 또는 내부 인터럽트 소스를 선택하는16-21범위의 정수일 수 있습니다.mode– 트리거 모드. 다음 중 하나:상수
트리거
상승 에지.
하강 에지.
상승 또는 하강 에지.
pull– 핀 풀 구성.pyb.Pin.PULL_NONE,pyb.Pin.PULL_UP또는pyb.Pin.PULL_DOWN중 하나.callback– 트리거 시 호출되는 호출 가능 객체. 정확히 하나의 인수, 즉 발생한 EXTI 라인 번호를 받아야 합니다.
클래스 메서드¶
메서드¶
상수¶