野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10940|回复: 2

求助,帮忙看看哪里有问题

[复制链接]
发表于 2018-3-30 00:48:47 | 显示全部楼层 |阅读模式
这是F429EXTI的程序,写完后烧进去,绿灯和红灯都亮,但是只有KEY1能够进行外部中断,KEY2没反应,求帮忙看看哪里写错了。


/****按键配置****/
void GPIO_KEY_config(void)
{
GPIO_InitTypeDef  GPIO_initstruct;
       
        /**配置GPIOA的时钟**/
RCC_AHB1PeriphClockCmd(KEY1_GPIO_CLK,ENABLE);
RCC_AHB1PeriphClockCmd(KEY2_GPIO_CLK,ENABLE);
       
/**设置GPIO的模式**/
GPIO_initstruct.GPIO_Mode  = GPIO_Mode_IN;
GPIO_initstruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;

/**配置要的引脚**/
GPIO_initstruct.GPIO_Pin   = KEY1_GPIO ;       
       
/**把所需要的配置写入GPIOA的相应位**/
GPIO_Init(KEY1_GPIO_PORT , &GPIO_initstruct);
       
GPIO_initstruct.GPIO_Pin   = KEY2_GPIO ;
GPIO_Init(KEY2_GPIO_PORT , &GPIO_initstruct);
       
}



/*******led配置*****/
void GPIO_LED_config(void)
{
GPIO_InitTypeDef  GPIO_initstruct;
       
        /**配置GPIOH的时钟**/
RCC_AHB1PeriphClockCmd(LED_CLK,ENABLE);
       
/**设置GPIO的输出模式**/
GPIO_initstruct.GPIO_Mode  = GPIO_Mode_OUT;
GPIO_initstruct.GPIO_Speed = GPIO_Fast_Speed;
GPIO_initstruct.GPIO_OType = GPIO_OType_PP;
GPIO_initstruct.GPIO_PuPd  = GPIO_PuPd_UP;

/**配置要点亮的引脚**/
GPIO_initstruct.GPIO_Pin   = LED_R ;       
       
/**把所需要的配置写入GPIOH的相应位**/
GPIO_Init(LED_R_PORT, &GPIO_initstruct);
       
GPIO_initstruct.GPIO_Pin   = LED_G ;       
GPIO_Init(LED_G_PORT, &GPIO_initstruct);
//       
// GPIO_initstruct.GPIO_Pin   = LED_B ;       
// GPIO_Init(LED_B_PORT, &GPIO_initstruct);
       
}




/******外部中断配置*****/
void EXTI_config(void)
{

  EXTI_InitTypeDef  EXTI_typestruct;
        NVIC_InitTypeDef  NVIC_typesstruct;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
       
        NVIC_PriorityGroupConfig( NVIC_PriorityGroup_0);
       
        NVIC_typesstruct.NVIC_IRQChannel=EXTI0_IRQn;
        NVIC_typesstruct.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_typesstruct.NVIC_IRQChannelSubPriority=1;
        NVIC_typesstruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_typesstruct);
       
       
        NVIC_typesstruct.NVIC_IRQChannel=EXTI15_10_IRQn;
        NVIC_typesstruct.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_typesstruct.NVIC_IRQChannelSubPriority=2;
        NVIC_typesstruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_typesstruct);
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
       
  EXTI_typestruct.EXTI_Line=EXTI_Line0;              
  EXTI_typestruct.EXTI_Mode=EXTI_Mode_Interrupt;      
        EXTI_typestruct.EXTI_Trigger=EXTI_Trigger_Rising;
        EXTI_typestruct.EXTI_LineCmd=ENABLE;  
  EXTI_Init(&EXTI_typestruct);
       
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);
       
        EXTI_typestruct.EXTI_Line=EXTI_Line13;
        EXTI_typestruct.EXTI_Mode=EXTI_Mode_Interrupt;      
        EXTI_typestruct.EXTI_Trigger=EXTI_Trigger_Rising;
        EXTI_typestruct.EXTI_LineCmd=ENABLE;  
        EXTI_Init(&EXTI_typestruct);
       
}




/******主函数*****/
int main(void)
{
         GPIO_LED_config();
         GPIO_KEY_config();
          EXTI_config();
         
  while(1);

}



/********中断函数*******/
void EXTI0_IRQHandler (void)
{
        if(EXTI_GetITStatus(EXTI_Line0!=RESET))
        {
GPIO_LEDR_TOOGLE;
        }
        EXTI_ClearITPendingBit(EXTI_Line0);
}

void EXTI15_10_IRQHandler (void)
{
        if(EXTI_GetITStatus(EXTI_Line13!=RESET))
        {
GPIO_LEDG_TOOGLE;
        }
        EXTI_ClearITPendingBit(EXTI_Line13);
}




PS:软件编译没有报错。。。。。。


回复

使用道具 举报

发表于 2018-3-30 17:56:31 | 显示全部楼层
把SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);放到EXTI_Init后试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 00:20:13 | 显示全部楼层
随风 发表于 2018-3-30 17:56
把SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);放到EXTI_Init后试试

还是没用,配置流程是一样的,KEY1就可以,KEY2就不行
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 01:40 , Processed in 0.025907 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表