打印

请教一个EXTI 按键的问题

[复制链接]
484|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
卡拉瓦乔|  楼主 | 2018-7-1 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, IO, pi, gp, GPIO
试过key1之后我试着把两个按键的程序合并起来,key1控制led1,key2控制led2,但是只有led1和key1有用,led2常亮,以下是部分代码,还请高手赐教。

exti.c部分:
#include "exti.h"



void NVIC_chushihua_PA0(void)
{
    //dingyi  jiegouti
    NVIC_InitTypeDef NVIC_PA0;
          //peizhi youxianji
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    //shezhi jiegouti chengyuan
    NVIC_PA0.NVIC_IRQChannel=EXTI0_IRQn;
    NVIC_PA0.NVIC_IRQChannelCmd=ENABLE;
    NVIC_PA0.NVIC_IRQChannelPreemptionPriority=0;
    NVIC_PA0.NVIC_IRQChannelSubPriority=0;


    //
    NVIC_Init(&NVIC_PA0);
        
         
}



void EXTI_chushihua_PA0(void)
{

   EXTI_InitTypeDef EXTI_PA0;
         GPIO_InitTypeDef GPIO_PA0;
         //
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA,ENABLE);
        
        
        /////IMPORTANT STEP!!!
        
        NVIC_chushihua_PA0();
        
        /////
         //
         GPIO_PA0.GPIO_Mode=GPIO_Mode_IPU;//SHANG LA MODE
         GPIO_PA0.GPIO_Pin=GPIO_Pin_0;
         GPIO_Init(GPIOA,&GPIO_PA0);
         
        
         //
         EXTI_PA0.EXTI_Line=EXTI_Line0;
         EXTI_PA0.EXTI_LineCmd=ENABLE;
         EXTI_PA0.EXTI_Mode=EXTI_Mode_Interrupt;
         EXTI_PA0.EXTI_Trigger=EXTI_Trigger_Falling ;
         
         //
         EXTI_Init(&EXTI_PA0);
         

}







////////////////////////////////////////////////////////
void NVIC_chushihua_PC13(void)
{
    //dingyi  jiegouti
    NVIC_InitTypeDef NVIC_PC13;
          //peizhi youxianji
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    //shezhi jiegouti chengyuan
    NVIC_PC13.NVIC_IRQChannel=EXTI15_10_IRQn;
    NVIC_PC13.NVIC_IRQChannelCmd=ENABLE;
    NVIC_PC13.NVIC_IRQChannelPreemptionPriority=0;
    NVIC_PC13.NVIC_IRQChannelSubPriority=0;


    //
    NVIC_Init(&NVIC_PC13);
        
         
}



void EXTI_chushihua_PC13(void)
{

   EXTI_InitTypeDef EXTI_PC13;
         GPIO_InitTypeDef GPIO_PC13;
         //
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOC,ENABLE);
        
        
        /////IMPORTANT STEP!!!
        
        NVIC_chushihua_PC13();
        
        /////
         //
         GPIO_PC13.GPIO_Mode=GPIO_Mode_IPU;//SHANG LA MODE
         GPIO_PC13.GPIO_Pin=GPIO_Pin_13;
         GPIO_Init(GPIOC,&GPIO_PC13);
         
        
         //
         EXTI_PC13.EXTI_Line=EXTI_Line13;
         EXTI_PC13.EXTI_LineCmd=ENABLE;
         EXTI_PC13.EXTI_Mode=EXTI_Mode_Interrupt;
         EXTI_PC13.EXTI_Trigger=EXTI_Trigger_Falling ;
         
         //
         EXTI_Init(&EXTI_PC13);
         

}
        
中断程序部分:


void EXTI0_IRQHandler(void)
{

   if (EXTI_GetFlagStatus(EXTI_Line0) == SET)
         {
       GPIO_WriteBit(GPIOB,GPIO_Pin_0,(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_0)));
                 
                   EXTI_ClearITPendingBit(EXTI_Line0);  

   }

}




void EXTI15_10_IRQHandler(void)
{

   if (EXTI_GetFlagStatus(EXTI_Line13) == SET)
         {
       GPIO_WriteBit(GPIOF,GPIO_Pin_7,(1-GPIO_ReadOutputDataBit(GPIOF,GPIO_Pin_7)));
                 
                   EXTI_ClearITPendingBit(EXTI_Line13);  

   }

}



初学者,先谢谢了!

使用特权

评论回复

相关帖子

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

本版积分规则

438

主题

438

帖子

0

粉丝