打印

按键中断无法执行,分析未过,请指教

[复制链接]
188|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kaloulin|  楼主 | 2019-11-28 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, IO, ni, pi, ST
编写STM32程序,按照教程一步步来写,可是两个按键只有一个可以进中断。说明:
KEY1D0;(无法进入中断)
KEY2A8;(程序可以执行中断)
配置代码:
void EXTI_Configuration(void)
{               
                EXTI_InitTypeDef EXTI_InitStructure;//配置中断线结构体        
                GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource0);//配置D.0为中断源
                EXTI_InitStructure.EXTI_Line=EXTI_Line0;//挂在0号线上
                EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式
                EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿出发方式
                EXTI_InitStructure.EXTI_LineCmd=ENABLE;
                EXTI_Init(&EXTI_InitStructure);//写入配置信息
        
                GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource8);//配置A.8为中断源
                EXTI_InitStructure.EXTI_Line=EXTI_Line8;//挂在8号线上
                EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式
                EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿出发方式
                EXTI_InitStructure.EXTI_LineCmd=ENABLE;
                EXTI_Init(&EXTI_InitStructure);//写入配置信息
}

void NVIC_Configuration(void)
{
                NVIC_InitTypeDef NVIC_InitStructure;
                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //占先优先级、副优先级的资源分配
                NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //指定中断源
                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //占先优先级设定
                NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;        //副优先级设定
                NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
                 NVIC_Init(&NVIC_InitStructure);
                 NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;
                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
                NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  
                //NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;        
                NVIC_Init(&NVIC_InitStructure);
}

中断代码:
extern unsigned char led_bit1,led_bit2;
void EXTI0_IRQHandler(void)
{
    if (EXTI_GetITStatus(EXTI_Line3) != RESET)
    {
        if(led_bit2)
        {
                GPIO_SetBits(GPIOD, GPIO_Pin_7);
                led_bit2=0;
        }
        else
        {
                GPIO_ResetBits(GPIOD, GPIO_Pin_7);
                led_bit2=1;
        }
     EXTI_ClearFlag(EXTI_Line3);
    }
}
void EXTI9_5_IRQHandler(void)
{
  if (EXTI_GetITStatus(EXTI_Line8) != RESET)
    {
        if(led_bit1)
        {
                GPIO_SetBits(GPIOD, GPIO_Pin_6);
                led_bit1=0;
        }
        else
        {
                GPIO_ResetBits(GPIOD, GPIO_Pin_6);
                led_bit1=1;
        }
        EXTI_ClearFlag(EXTI_Line8);
    }
}

在main函数中已经调用中断配置函数了,目前PA8的按键能出发中断,PD0的不可以,二者电路相同。请高人指教。谢谢!

使用特权

评论回复

相关帖子

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

本版积分规则

439

主题

448

帖子

0

粉丝