stm32f407定时器5无法进行中断。

调试编码器时中断函数无法执行

#include "timer.h"
#include "timer.h"
#include "sys.h"
#include "bmq.h"
#include "pid.h"
#include "led.h"

extern float encoder1;
extern float speed;
extern int PID_left;
extern int PID_right;
extern float mid1;
extern float mid2;
extern int Sv;
 
//arr:自动重装值
//psc:时钟预分频数


static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
 
    NVIC_InitStructure.NVIC_IRQChannel =TIM5_IRQn;  //TIM5中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;  //抢占优先级0级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;  //从优先级3级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
    NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器
}

/*TIM1 定时器中断
抢占优先级4
子优先级4*/
void TIM5_Init(u16 arr,u16 psc)    
{  
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);    //使能定时器5时钟
     
    TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
    TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 
    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
    TIM_TimeBaseStructure.TIM_RepetitionCounter=0;    
    TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

    TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE);
    
    NVIC_Configuration();
    
    //中断优先级NVIC设置

    TIM_Cmd(TIM5, ENABLE); 
}

 
//定时器1中断服务程序
void TIM5_UP_IRQHandler(void)   //TIM5中断
{           
    if(TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)//检查指定的TIM中断发生与否:TIM 中断源 
    {
            LED1 =!LED1;
        //应用代码编写区
        
        mid1 = Read_Encoder(4); printf("%f",mid1);
         //mid2=Read_Encoder(4)
       encoder1 = panduan_PID(mid1);
         //encoder2=panduan_PID(mid2)
         speed = encoder1/1560/0.01;
             //speed2 = encoder2/1560/0.01;
     PID_left=Realize_PID_left (encoder1);    //===位置PID控制器
              //PID_right=Realize_PID_left (encoder1);    //===位置PID控制器
      Xianfu_Pwm();
        if((Sv- encoder1)>=10||(Sv - encoder1)<=-10)
        {  
          Set_Pwm(PID_left);
        }
        TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//清除TIMx的中断待处理位:TIM 中断源 
    }         
}

void ENABLE_LED1(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //时钟使能 
    
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//使能GPIOE
    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_Init(GPIOE,&GPIO_InitStructure);
}
这是中断函数

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^