R1_up/User/device/detect.c
2025-06-28 01:54:37 +08:00

51 lines
1.1 KiB
C

#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) {
// // 错误处理
// }
}