新人求助按键和定时器

2019-10-12 13:42发布

#include "sys.h"
#include "led.h"
#include "timer.h"
#include "key.h"
#include "delay.h"

//extern u8 flag2;

int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为第二组
        KEY_Init();
  TIM_Init(7199,9999);
        led_Init();
        delay_init();//函数的声明
        while(1)
        {               
                D0=!D0;
                delay_ms(500);
                D1=!D1;//D0.D1翻转,依次点亮
                delay_ms(500);
                 if(flag==1)         //按键按下的标志位
                        TIM_Cmd(TIM3,ENABLE);//由按键控制定时器中断使能               
                        if(a>3)
                        {
                                flag=0;
                                TIM_Cmd(TIM3,DISABLE);
                        }
        }
       
       
}

void TIM3_IRQHandler(void)//按键中断服务函数
        {
                if(TIM_GetITStatus(TIM3,TIM_IT_Update))
                {
                           a++;
                          D0=1;
                                D1=1;
                                if(a==2)
                                {
                                D0=0;
                                D1=0;
                                }
                               
                        }
                       
                               
                       
       
                        TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除中断标志位
                }

       
        void EXTI9_5_IRQHandler(void)    //按键中断服务函数
         {
                if(EXTI_GetITStatus(EXTI_Line5))
       
                        delay_ms(5);//消抖
                        if(KEY0==0)
            flag=1;
                       
                        EXTI_ClearITPendingBit(EXTI_Line5);        //清除中断标志位
                }
       



我想用这个程序完成开始两个灯依次点亮,当按键按下的时候灯灭两分钟,然后灯变亮1分钟,之后恢复正常的状态,有个大腿给抱抱吗?





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。