#include "gpio.h" #include "Function.h" extern unsigned char flag_spi; // GPIO初始化结构体 GPIO_InitTypeDef GPIO_InitStruct = {0}; // 初始化PB5引脚 void GPIO_Init(void) { __HAL_RCC_GPIOB_CLK_ENABLE(); // 使能GPIOB时钟 // 配置PB5为输入,选择上升沿中断 GPIO_InitStruct.Pin = PPS_PIN; // 配置PB5引脚 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; // 配置为上升沿中断 GPIO_InitStruct.Pull = GPIO_NOPULL; // 不启用上拉或下拉电阻 HAL_GPIO_Init(PPS_GPIO_PORT, &GPIO_InitStruct); // 初始化PB5 HAL_NVIC_SetPriority(EXTI9_5_IRQn, 2, 0); // 设置外部中断优先级 HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); // 使能中断 HAL_GPIO_WritePin(PPS_GPIO_PORT,PPS_PIN,GPIO_PIN_RESET); //开始为低电平 检测上升沿 可不设置 } // 外部中断服务函数 void EXTI9_5_IRQHandler(void) { // 判断PB5的中断标志是否被设置 if (__HAL_GPIO_EXTI_GET_IT(PPS_PIN) != RESET) { // 清除中断标志 __HAL_GPIO_EXTI_CLEAR_IT(PPS_PIN); // 处理上升沿事件 flag_spi = 0; } }