野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11373|回复: 4

求助 EXTI中断

[复制链接]
发表于 2016-10-16 22:50:59 | 显示全部楼层 |阅读模式
#include "bsp_exti.h"

void EXTI_NVIC_Config (void);

void KEY_EXTI_Config(void)
{
        GPIO_InitTypeDef  GPIO_InitStruct;
        EXTI_InitTypeDef  EXTI_InitStruct;
       
        EXTI_NVIC_Config ();
       
        //打开KEY1的时钟  
        RCC_APB2PeriphClockCmd(KEY1_EXTI_GPIO_CLK , ENABLE);
        //配置KEY1为浮空输入
        GPIO_InitStruct.GPIO_Pin = KEY1_EXTI_GPIO_PIN;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(KEY1_EXTI_GPIO_PORT, &GPIO_InitStruct);
       
        //打开KEY2的时钟  
        RCC_APB2PeriphClockCmd(KEY2_EXTI_GPIO_CLK , ENABLE);
        //配置KEY2为浮空输入
        GPIO_InitStruct.GPIO_Pin = KEY2_EXTI_GPIO_PIN;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(KEY2_EXTI_GPIO_PORT, &GPIO_InitStruct);
       
        //打开AFIO时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);
        //初始化KEY1_EXTI  上升沿有效
        EXTI_InitStruct.EXTI_Line = EXTI_Line0;
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStruct);
       
        //初始化KEY2_EXTI   下降沿有效
        EXTI_InitStruct.EXTI_Line = EXTI_Line13;
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStruct);
       
}

//配置中断优先级函数
void EXTI_NVIC_Config (void)
{
        NVIC_InitTypeDef  NVIC_InitStruct;
        //配置KEY1
        NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStruct);
       
        //配置KEY2
        NVIC_InitStruct.NVIC_IRQChannel = EXTI15_10_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStruct);
       
       
}
我是照着KEY1初始化KEY2的  但是KEY1能用KEY2不能用 求助
下面是中断函数
void EXTI0_IRQHandler (void)
{
        if(EXTI_GetITStatus(EXTI_Line0) != RESET)
        {
                LED_G_TOGGLE;
        }
        EXTI_ClearITPendingBit(EXTI_Line0);
}

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


回复

使用道具 举报

发表于 2016-10-17 08:54:28 | 显示全部楼层
看不出问题,是这样初始化的,是不是引脚号不对?
回复 支持 反对

使用道具 举报

发表于 2016-10-17 09:36:07 | 显示全部楼层
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
没有调用这个函数
回复 支持 反对

使用道具 举报

发表于 2016-10-17 11:17:45 | 显示全部楼层
应该是楼上说的额,没有调用GPIO_EXTILineConfig这个函数,I/O和中断线的映射没有建立起来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-17 16:24:18 | 显示全部楼层
stm_bldc_2.4g 发表于 2016-10-17 09:36
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
没有调用这个函数

恩 改过来了 谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 05:47 , Processed in 0.030401 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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