• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

定时器TIM5进不了中断问题

闭上眼睛就是天黑 2021-07-08 浏览量:1228
我用F107的板子,准备每隔0.5进一次定时器中断,可是发现程序没有进中断,我用LED能否点亮来判断有没有进中断,结果灯不亮,我检查我的配置,也没发现什么问题,请大神帮我看看,分析分析,感谢!!!
//定时器5初始化
//定时0.5s每0.5s进一次定时中断
void TIM5_Enable(u16 arr)
{
        TIM_TimebaseInitTypeDef TIM_TimebaseStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5ENABLE);
        TIM_TimebaseStructure.TIM_ClockDivision=0;
        TIM_TimebaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimebaseStructure.TIM_Period=arr;//arr=4999
        TIM_TimebaseStructure.TIM_Prescaler=7199;
        TIM_TimebaseStructure.TIM_RepetitionCounter=0;
        TIM_TimebaseInit(TIM5&TIM_TimebaseStructure);
       
        NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
        NVIC_Init(&NVIC_InitStructure);
        TIM_ClearITPendingBit(TIM5TIM_IT_Update);
        TIM_ITConfig(TIM5TIM_IT_UpdateENABLE);
        TIM_Cmd(TIM5ENABLE);
}

void TIM5_IRQHanler(void)//TIM5中断
{
        if(TIM_GetITStatus(TIM5TIM_IT_Update)==SET) //检查指定的TIM中断发生与否:TIM 中断源
        {
                TIM_ClearITPendingBit(TIM5TIM_IT_Update);//清除TIMx的中断待处理位:TIM 中断源 ;
    if(TX_RX_SET==0)               
                {
                 LED_RUN=1;
                  printf("1111/r/n");
     RS485_SendData();
          }
}
}



0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:4
  •     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   这个之前有没有定义过。 这个只能定义一次。

  • 程序没啥问题,你把中断里面判断引脚这个语句去掉试试看,还有就是用io单独点亮试试看,排除问题

  • 在中断 函数中不判断if,直接放到中断函数最开始,看会不会进

  • 你的点灯前还有一个判断TX_RX_SET的if,这个确定是有效的么,删除试试

相关问题

问题达人换一批

定时器TIM5进不了中断问题