查看: 2666|回复: 1

STM32两个普通定时器,一个正常中断,一个不中断

[复制链接]

该用户从未签到

发表于 2015-7-28 16:10:36 | 显示全部楼层 |阅读模式
分享到:
用的STM32F103RB,设置了两个TIM定时器TIM2和TIM3,产生中断后计数,通过Jlink查看计数值,来判断中断执行情况。
现在其中一个定时器TIM3中断,可以正常进行(正常计数)。另一个TIM2中断,就没法产生中断(因为计数变量没有变化)。
这两个中断程序基本是一样的,求大神们帮忙看看为什么TIM2就不能中断呢?

void NVIC_Configuration(void)             //中断优先级
{
  NVIC_InitTypeDef NVIC_InitStructure;

  /* Configure the NVIC Preemption Priority Bits */  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                  

  /* Enable the USART1 Interrupt */
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;                                    
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  /* Enable the USART2 Interrupt */
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;                          
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);       

        /* Enable the TIM3 Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;      
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);       
       
        /* Enable the Motor Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;      
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);       
//       
}

void TIM3_Config(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_DeInit(TIM3);       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);                                       
       

        TIM_TimeBaseStructure.TIM_Period = 2000 - 1;                       
        TIM_TimeBaseStructure.TIM_Prescaler = 8400 - 1;               
        TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                                                       
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;       
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);       
        TIM_ClearFlag(TIM3,TIM_FLAG_Update);                                                        
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
        TIM_Cmd( TIM3, ENABLE);                                                                                                               
}


void TIM2_Config(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_DeInit(TIM2);       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);                                       
       

        TIM_TimeBaseStructure.TIM_Period = 2000 - 1;                       
        TIM_TimeBaseStructure.TIM_Prescaler = 8400 - 1;               
        TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                                                       
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;       
        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);       
        //TIM_ARRPreloadCongig(TIM2,ENABLE);               
        TIM_ClearFlag(TIM2,TIM_FLAG_Update);                                                        
        TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
        TIM_Cmd( TIM2, ENABLE);                                                                                                       
}

/*******************************************************************************

* Function Name  : TIM3_IRQHandler

* Description    : This function handles TIM3 global interrupt request. Count for 1min

* Input          : None

* Output         : None

* Return         : None

* Global                                 : Count1min

******************************************************************************/
u8 Count1min=59;        //1s->1min

void TIM3_IRQHandler(void)
{
        if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)    //¼ì²âÊÇ·ñ·¢ÉúÒç³ö¸üÐÂʼþ
        {
                TIM_ClearITPendingBit(TIM3 , TIM_FLAG_Update);//                Çå³ýÖжϴý´¦Àíλ         
                if(Count1min == 0)                   //¼Æ60s
                        {
                                GPIOC->ODR ^= GPIO_Pin_6;
                                //Count1min=59;                                       
                        }
                        else                            //for test                       
                        {
                                Count1min--;
                        }  
         }        
}

/*******************************************************************************

* Function Name  : TIM2_IRQHandler

* Description    : This function handles TIM2 global interrupt request.

* Input          : None

* Output         : None

* Return         : None

* Global                                 : delay

******************************************************************************/

        u8 Count1min4=59;        //1s->1min

void TIM2_IRQHandler(void)
{
        u8 outflag;

        if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)   
        {
                TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
                if(Count1min4 == 0)                  
                        {
                                GPIOC->ODR ^= GPIO_Pin_2;
                                Count1min4=59;                                       
                        }
                        else                            //for test                       
                        {
                                Count1min4--;
                        }  

}}


评分

参与人数 1与非币 +5 收起 理由
loveeeboard + 5 三周年铜板双倍!

查看全部评分

回复

使用道具 举报

  • TA的每日心情
    慵懒
    2018-3-28 17:24
  • 签到天数: 276 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-7-31 09:54:02 | 显示全部楼层
    你仿真调试下   看看  具体的寄存器工作没  
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 00:44 , Processed in 0.137323 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.