키패드를 stm32f429i 보드에 인터페이스하고 보드의 LCD 화면에 키패드의 각 버튼을 표시 할 수 있습니다. 짧은 언론은 잘 작동하지만 긴 프레스 키 이벤트를 구현하는 방법을 모릅니다. 누군가 나를 도울 수 있습니까?keil을 사용하여 stm32f429i 검색 보드에 키 이벤트를 길게 구현하는 방법은 무엇입니까?
0
A
답변
0
0
편집 : suggested by PeterJ_01으로, 타이머 인터럽트를 사용하는 가장 우아한 방법은 다음 링크 라이브러리입니다. 버튼에 GPIO 인터럽트를 사용하지 마십시오! 당신이 Hardware Abstraction Layer (HAL) 라이브러리를 사용하는 경우
, 당신은 당신의 GPIO 인터럽트 내부에이 같은 작업을 수행 할 수 있습니다
static int timestamp_pressed = -1; // -1 means not pressed
if (timestamp_pressed == -1) {
// user just pressed the button
timestamp_pressed = HAL_GetTick(); // milliseconds since startup
} else if (HAL_GetTick() - timestamp_pressed > 2000) {
// 2000 milliseconds = 2 seconds are over
// << your code
timestamp_pressed = -1;
}
당신은 HAL을 사용하지 않는 및 일반 타이머 인터럽트를 사용하지 않을 경우 (에서 TIM1, TIM2, TIM3, ...)은 SysTick 타이머 사용을 고려할 수 있습니다 (인터럽트 또는 미사용). 인터넷에 관한 많은 정보가 있습니다.)
EXTI 인터럽트 버튼 사용은 큰 실수이며 피해야합니다. –
그 이유는 무엇입니까? 접촉이 바운스 되었기 때문에? 그렇다면 디버그 시간 동안 인터럽트에서 프로그램 실행을 차단해야하기 때문에 – MemAllox
과 같은 방식으로 해결할 수 없습니까? 타이머 인터럽트를 사용해야합니다. –