打印

怎么就是进不了外部中断,搜了帖子看也不知道问题。

[复制链接]
1413|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luojijian|  楼主 | 2013-7-19 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void GPIO_init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE );
               
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
}
--------------------------------------------------------------------------------------------------------------------------
void EXTIX_Init(void)
{
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource9);

        EXTI_InitStructure.EXTI_Line=EXTI_Line9;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
          EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);               

          NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;                  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;                                                  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                               
          NVIC_Init(&NVIC_InitStructure);
}
-------------------------------------------------------------------------------------------------------------
void EXTI9_5_IRQHandler(void)
{
                static u8 KeyStatue=0;
       
        if(EXTI_GetITStatus(EXTI_Line9)!=RESET)
        {
                        if(!KeyStatue)
                        {
                                        GPIO_ResetBits(GPIOD,GPIO_Pin_2);
                                        KeyStatue=1;
                        }
                        else
                        {
                                        GPIO_SetBits(GPIOD,GPIO_Pin_2);
                                        KeyStatue=0;
                        }
       
                        EXTI_ClearITPendingBit(EXTI_Line9); //清除LINE0上的中断标志位  
        }
       
}

我的按键是按下的时候是低电平。
沙发
haibian826| | 2013-7-19 16:49 | 只看该作者
一般硬件里,按键按下都是低电平。
你可能少设置了这个东西:优先级组

请参考这里:https://bbs.21ic.com/icview-584279-1-1.html,芯嵌stm32入门教程之十《对STM32中断理解的补充》

使用特权

评论回复
板凳
luojijian|  楼主 | 2013-7-19 18:53 | 只看该作者
haibian826 发表于 2013-7-19 16:49
一般硬件里,按键按下都是低电平。
你可能少设置了这个东西:优先级组

优先级组有设置了的
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

使用特权

评论回复
地板
uet_cache| | 2013-7-19 19:17 | 只看该作者
可以检查你的主程序,这些初始化是否调用了。查看你的硬件是否正解。

使用特权

评论回复
5
haibian826| | 2013-7-19 19:20 | 只看该作者
luojijian 发表于 2013-7-19 18:53
优先级组有设置了的
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

你贴出的代码里没有优先级组的设置。。。请再确认。

另外,你贴出的代码,其他应该没问题。

使用特权

评论回复
6
luojijian|  楼主 | 2013-7-20 11:33 | 只看该作者
uet_cache 发表于 2013-7-19 19:17
可以检查你的主程序,这些初始化是否调用了。查看你的硬件是否正解。

确实硬件有点问题。。。

使用特权

评论回复
7
luojijian|  楼主 | 2013-7-20 11:33 | 只看该作者
haibian826 发表于 2013-7-19 19:20
你贴出的代码里没有优先级组的设置。。。请再确认。

另外,你贴出的代码,其他应该没问题。 ...

硬件的问题。。

使用特权

评论回复
8
luojijian|  楼主 | 2013-7-20 11:34 | 只看该作者
谢谢大家了!

使用特权

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

本版积分规则

28

主题

97

帖子

0

粉丝