#include "detect.h" #include "gpio_it.h" // 确保包含 GPIO 中断相关头文件 #include "bsp_delay.h" int key=0; int ball_exit=0; int test_exit=0; // 按键中断回调函数 void detect_exit(void) { delay_ms(10); // 延时10ms key++; // 按键按下时变量自增 __HAL_GPIO_EXTI_CLEAR_IT(KEY_Pin); // 清除中断标志位 } void detect_ball(void) { // ball_exit++; // 按键按下时变量自增 __HAL_GPIO_EXTI_CLEAR_IT(BALL_Pin); // 清除中断标志位 } void detect_test(void) { delay_ms(10); // 延时10ms if(HAL_GPIO_ReadPin(TEST_GPIO_Port, TEST_Pin) == GPIO_PIN_RESET) { ball_exit++; } __HAL_GPIO_EXTI_CLEAR_IT(TEST_Pin); // 清除中断标志位 } void detect_init(void) { BSP_GPIO_RegisterCallback(KEY_Pin, detect_exit); BSP_GPIO_RegisterCallback(BALL_Pin, detect_ball); BSP_GPIO_RegisterCallback(TEST_Pin, detect_test); // // 启用按键中断 // if (BSP_GPIO_EnableIRQ(KEY_Pin) != BSP_OK) { // // 错误处理 // } // if (BSP_GPIO_EnableIRQ(BALL_Pin) != BSP_OK) { // // 错误处理 // } }