打印

请问STM32F101的EXTI4的问题

[复制链接]
1635|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcuatmel|  楼主 | 2011-4-20 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EXTI5,EXTI9我都成功了,当调试到4的时候中断就不对了,初始化过程是一样的,一直不进EXTI4的中断,后来发现进EXTI9_5的中断了,请高手指点下,是哪儿不对?
沙发
mcuatmel|  楼主 | 2011-4-20 13:49 | 只看该作者
我的程序大致过程如下:
IO初始化部分
/***************************************************************************/
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5; //输入
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;      //输入速度2MHz
    GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_IPU;        //输入输出模式
    GPIO_Init(GPIOA, &GPIO_InitStructure);                //A组GPIO初始化
EXTI 初始化部分:
  EXTI_InitTypeDef EXTI_InitStructure;        //EXTI初始化结构定义
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);//管脚选择
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//事件选择
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发模式
  EXTI_InitStructure.EXTI_Line = EXTI_Line5 ; //线路选择
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//启动中断
  EXTI_Init(&EXTI_InitStructure);//初始化

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4);//管脚选择
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//事件选择
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发模式
  EXTI_InitStructure.EXTI_Line = EXTI_Line4 ; //线路选择
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//启动中断
  EXTI_Init(&EXTI_InitStructure);//初始化
....
程序执行后,如果在EXTI4脚上有低电平,不进EXTI4中断,反而进EXTI9_5中断:
void EXTI9_5_IRQHandler(void)
{
        Exti9_5Handler();
}
......
void Exti9_5Handler()
{
        if (EXTI_GetFlagStatus(EXTI_Line5)>0)//
        {
                 .....

                 }
}
并且那个if语句条件还能为真,我看了下寄存器,当时EXTI->PR=0x48
从中断出来后EXTI->PR=0x16
不知是哪儿不对,请大侠们帮看看,谢了先!

使用特权

评论回复
板凳
mcuatmel|  楼主 | 2011-4-20 16:18 | 只看该作者
找到了,我NVIC忘了初始化了,加入如下这段就好了。
        /*****************************************************************************/
        NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQChannel;          //通道
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;       //优先级
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;              //响应级
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                 //启动
        NVIC_Init(&NVIC_InitStructure);                                 //初始化

使用特权

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

本版积分规则

512

主题

1456

帖子

2

粉丝