打印

GD32F150R定时器中断问题

[复制链接]
3606|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
风呼呼|  楼主 | 2016-10-29 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器中断的配置没有什么问题,可是中断服务函数进去后不知道为什么出不来,求大神帮忙分析一下,程序在下面:
int main(void)
{   
    /* Init Test Status LED */
    TestStatusLedInit();
                SysTick_Configuration();//Òª·ÅÔÚ¿¿Ç°µÄλÖÃ
    /* Flash LED for test */
    FlashLED ( 5  );
               
                NVIC_Configuration();

                GPIO_Configuration();
                TIM2_Int_Init(499,7199);       
                while (1)
    {
    }

}

//TIM2µÄ¶¨Ê±Æ÷Öжϳõʼ»¯
//arr£º×Ô¶¯ÖØ×°Öµ
//psc£ºÊ±ÖÓÔ¤·ÖƵÊý
void TIM2_Int_Init(uint16_t arr,uint16_t psc)
{
                TIMER_BaseInitPara  TIM_TimeBaseStructure;
               
                RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_TIMER2, ENABLE);
               
                //³õʼ»¯TIM3
                TIMER_DeInit(TIMER2);
                TIM_TimeBaseStructure.TIMER_Period = arr; //ÉèÖÃÔÚÏÂÒ»¸ö¸üÐÂʼþ×°Èë»î¶¯µÄ×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ
                TIM_TimeBaseStructure.TIMER_Prescaler =psc; //ÉèÖÃÓÃÀ´×÷ΪTIMxʱÖÓƵÂʳýÊýµÄÔ¤·ÖƵֵ
                TIM_TimeBaseStructure.TIMER_ClockDivision = TIMER_CDIV_DIV1; //ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim
                TIM_TimeBaseStructure.TIMER_CounterMode = TIMER_COUNTER_UP;  //TIMÏòÉϼÆÊýģʽ
                TIMER_BaseInit(TIMER2, &TIM_TimeBaseStructure); //¸ù¾ÝTIM_TimeBaseInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯TIMxµÄʱ¼ä»ùÊýµ¥Î»
               
                TIMER_CARLPreloadConfig(TIMER2,ENABLE);
       
                TIMER_INTConfig(TIMER2,TIMER_INT_UPDATE,ENABLE);
               
                TIMER_Enable(TIMER2, ENABLE);
}

void GPIO_Configuration(void)
{
    GPIO_InitPara GPIO_InitStructure;
    RCC_AHBPeriphClock_Enable(RCC_AHBPERIPH_GPIOC ,ENABLE);

    /*Configure PA8(TIMER1 CH1) as alternate function*/
    GPIO_InitStructure.GPIO_Pin   = GPIO_PIN_11;
    GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PUPD_NOPULL;
    GPIO_Init(GPIOC,&GPIO_InitStructure);

}

/**
  * @brief  Configure the nested vectored interrupt controller.
  * @param  None
  * @retval None
  */
void NVIC_Configuration(void)
{
    NVIC_InitPara NVIC_InitStructure;

    NVIC_PRIGroup_Enable(NVIC_PRIGROUP_1);

    /* Enable the TIMER3 Interrupt */
    NVIC_InitStructure.NVIC_IRQ                = TIMER2_IRQn;
    NVIC_InitStructure.NVIC_IRQPreemptPriority = 0;
    NVIC_InitStructure.NVIC_IRQSubPriority     = 1;
    NVIC_InitStructure.NVIC_IRQEnable          = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}
沙发
风呼呼|  楼主 | 2016-10-29 16:52 | 只看该作者
这是中断服务函数
void TIMER2_IRQHandler(void)
{
                if(TIMER_GetIntBitState(TIMER2,TIMER_INT_UPDATE)!=0)
                {       
                                TIMER_ClearIntBitState(TIMER2,TIMER_INT_UPDATE);                       
                                GPIOC->DOR ^= GPIO_PIN_11;
                               
                                //GPIOC->BOR = GPIO_PIN_11;
                }
}

使用特权

评论回复
板凳
chuntian2016| | 2016-11-10 21:34 | 只看该作者
中断程序里面的不应该放入重新初始化程序的

使用特权

评论回复
地板
chuntian2016| | 2016-11-10 21:35 | 只看该作者
这个可以直接的在中断程序里面放一个重启初始化操作的标志的,,讲初始化的程序放到main函数中即可。

使用特权

评论回复
5
chuntian2016| | 2016-11-10 21:36 | 只看该作者
标志位置位的,就启动该初始化部分的,,而又不涉及到中断程序的。

使用特权

评论回复
6
风呼呼|  楼主 | 2016-11-16 11:34 | 只看该作者
chuntian2016 发表于 2016-11-10 21:35
这个可以直接的在中断程序里面放一个重启初始化操作的标志的,,讲初始化的程序放到main函数中即可。 ...

定时器初始化的程序我通过函数调用的形式在main函数中实现,这样也是可以的吧?

使用特权

评论回复
7
vivilzb1985| | 2016-11-20 19:50 | 只看该作者
先看下相关的中断设置的是否OK的

使用特权

评论回复
8
vivilzb1985| | 2016-11-20 19:50 | 只看该作者
还有配置的对应的管教的是否正确的,,以及使用的函数的是都OK

使用特权

评论回复
9
历史暴君| | 2016-11-21 22:24 | 只看该作者
标志位是否清错

使用特权

评论回复
10
tongbu2015| | 2016-11-27 15:37 | 只看该作者
TIMER_ClearIntBitState(TIMER2,TIMER_INT_UPDATE); 这个放到中断的最后变得吧

使用特权

评论回复
11
tongbu2015| | 2016-11-27 15:38 | 只看该作者
TIMER_ClearIntBitState(TIMER2,TIMER_INT_UPDATE); 这个放到中断的最后变得吧

使用特权

评论回复
12
zhangbo1985| | 2016-11-27 16:19 | 只看该作者
清楚中断标志的要放到中断程序所有执行完的最后的

使用特权

评论回复
13
qiangg| | 2016-11-27 19:51 | 只看该作者
建议多看看例程

使用特权

评论回复
14
baimiaocun2015| | 2016-11-27 20:12 | 只看该作者
定时器中断的,注意中断标志位的清零操作的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

48

帖子

2

粉丝