本人是新手问个问题

[复制链接]
1348|4
 楼主| 杨思超 发表于 2013-11-13 22:17 | 显示全部楼层 |阅读模式
野火的开发板里面怎么开中断?就想TIM1_IRQHandler(void) 里面要写什么函数 我找了里面没有  还要添加
linfeng24 发表于 2013-11-14 00:31 | 显示全部楼层
第一步,你得开定时器的时钟,如RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
第二步,你得配置定时器具体参数,如
    TIM_DeInit(TIM2);
    TIM_TimeBaseStructure.TIM_Period=1000;                                                                                 /*
    TIM_TimeBaseStructure.TIM_Prescaler= (72 - 1);                                 
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;                
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
    TIM_ClearFlag(TIM2, TIM_FLAG_Update);                                                                   
    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
第三步,使能TIM2 ,TIM_Cmd(TIM2, ENABLE);       

第四步,配置中断优先级,
    NVIC_InitTypeDef NVIC_InitStructure;
   
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);                                                                                                         
    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;          
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;       
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

第五步,写中断服务函数,即定时器时间到后进入中断后要处理什么事情——
void TIM2_IRQHandler(void)
{
        if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
        {       
                TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);   
                   time++;
        }                        
}
SLHSu37 发表于 2013-11-14 07:55 | 显示全部楼层
linfeng24 发表于 2013-11-14 00:31
第一步,你得开定时器的时钟,如RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
第二步,你得配置 ...

严重支持!!
outstanding 发表于 2013-11-14 08:15 | 显示全部楼层
sidafuzhihe 发表于 2013-11-14 11:53 | 显示全部楼层
看手册
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部