41 lines
1.0 KiB
C
41 lines
1.0 KiB
C
#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;
|
||
}
|
||
}
|
||
|
||
|
||
|