将一个io配置成EXTI中断需要有哪几个步骤

2019-10-11 15:24发布

将一个io配置成EXTI中断需要有哪几个步骤
有例子代码最好
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
诸葛亮的哥哥
1楼-- · 2019-10-11 18:59
void Exit_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;
        EXTI_InitTypeDef EXTI_InitStruct;
        NVIC_InitTypeDef NVIC_InitStruct;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
       
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;//下拉输入,
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_4;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStruct);
       
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource5);//PB5设置为外部中断输入
       
        EXTI_InitStruct.EXTI_Line=EXTI_Line5;
        EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿(默认不导电)
        EXTI_InitStruct.EXTI_LineCmd=ENABLE;
       
        EXTI_Init(&EXTI_InitStruct);

        NVIC_InitStruct.NVIC_IRQChannel=EXTI9_5_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;
        NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStruct);
       
}
void EXTI9_5_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line5)==!RESET)
        {
     //在此添加中断处理
                EXTI_ClearITPendingBit(EXTI_Line5);
        }
}
richthoffen
2楼-- · 2019-10-11 19:47
诸葛亮的哥哥 发表于 2017-3-18 17:00
void Exit_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);这一句是开通谁的复用时钟,什么情况下要开通复用时钟.

一周热门 更多>