打印
[STM32F1]

F103外部中断问题

[复制链接]
976|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanyisq|  楼主 | 2016-5-3 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wanyisq 于 2016-5-3 22:34 编辑

新手编写了一个F103的外部中断程序,不知错误在哪,就是不能实现中断。
请教一下各位
void GPIO_EXIT_Init(void)
{
        
        GPIO_InitTypeDef GPIO_InitStructure;
        EXTI_InitTypeDef EXTI_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);  //PA8-KEY
        
       NVIC_InitTypeDef NVIC_InitStructure;
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
      NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
      NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
      NVIC_Init(&NVIC_InitStructure);
        
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);        
        
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource8);
        EXTI_InitStructure.EXTI_Line = EXTI_Line8;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);
        
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9 | GPIO_Pin_8;   //PD8、9--LED
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);

}

int main(void)
{
        
        GPIO_EXIT_Init();
        GPIO_SetBits(GPIOD, GPIO_Pin_8);
        while(1)
        {
                GPIO_SetBits(GPIOD, GPIO_Pin_8);
        }
}

void EXIT9_5_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line8)!=RESET)
        {
//                GPIO_WriteBit(GPIOD,GPIO_Pin_8,
//                        (BitAction)(1-GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_8)));
                GPIO_WriteBit(GPIOD, GPIO_Pin_9, (BitAction)((1-GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_9))));
                EXTI_ClearITPendingBit(EXTI_Line8);
               
        }
}
头文件都已经包含进去了
沙发
xyz549040622| | 2016-5-4 08:54 | 只看该作者
随便找个例程看看知道了。中断函数居然在主函数中,难道不应该在it.c中么。

使用特权

评论回复
板凳
liyuxing| | 2016-5-4 09:17 | 只看该作者
PA8输入引脚不要设置悬空,改成 GPIO_Mode_In_PU_IT试试

使用特权

评论回复
地板
wanyisq|  楼主 | 2016-5-4 20:41 | 只看该作者
xyz549040622 发表于 2016-5-4 08:54
随便找个例程看看知道了。中断函数居然在主函数中,难道不应该在it.c中么。 ...

中断放在主函数里也可以吧

使用特权

评论回复
5
wanyisq|  楼主 | 2016-5-4 20:41 | 只看该作者
liyuxing 发表于 2016-5-4 09:17
PA8输入引脚不要设置悬空,改成 GPIO_Mode_In_PU_IT试试

因为电路里有上拉 所以我设置的是浮空

使用特权

评论回复
6
xyz549040622| | 2016-5-4 21:11 | 只看该作者
wanyisq 发表于 2016-5-4 20:41
中断放在主函数里也可以吧

这样,中断向量表如何找的到呢?没这么干过,你可以试试。51中经常这么干,建议规范点,放在it.c文件中

使用特权

评论回复
7
ywlzh| | 2016-5-4 21:41 | 只看该作者
xyz549040622 发表于 2016-5-4 08:54
随便找个例程看看知道了。中断函数居然在主函数中,难道不应该在it.c中么。 ...

这个很好奇吗? 放在哪个文件里不一样吗?中断来了,自然会跳到相应的函数上去。这个只是习惯使然罢了

使用特权

评论回复
8
lovecat2015| | 2016-5-4 21:58 | 只看该作者
没开中断吗?

使用特权

评论回复
9
xyz549040622| | 2016-5-4 23:14 | 只看该作者
ywlzh 发表于 2016-5-4 21:41
这个很好奇吗? 放在哪个文件里不一样吗?中断来了,自然会跳到相应的函数上去。这个只是习惯使然罢了 ...

这个真心没试过,中断向量表中应该包含it.h文件,it.c中定义中断函数,it.h中申明。中断函数放在main.c中的话,申明是直接申明就可以呢?还需要加个main.h文件呢?

使用特权

评论回复
10
ywlzh| | 2016-5-5 10:22 | 只看该作者
xyz549040622 发表于 2016-5-4 23:14
这个真心没试过,中断向量表中应该包含it.h文件,it.c中定义中断函数,it.h中申明。中断函数放在main.c中 ...

不用声明,也不需要main.h这个文件

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
xyz549040622 + 5 赞一个!
11
杨爱林林| | 2016-5-5 13:42 | 只看该作者
xyz549040622 发表于 2016-5-4 23:14
这个真心没试过,中断向量表中应该包含it.h文件,it.c中定义中断函数,it.h中申明。中断函数放在main.c中 ...

向量表在.s文件里面

使用特权

评论回复
12
wanyisq|  楼主 | 2016-5-5 20:00 | 只看该作者
xyz549040622 发表于 2016-5-4 23:14
这个真心没试过,中断向量表中应该包含it.h文件,it.c中定义中断函数,it.h中申明。中断函数放在main.c中 ...

启动文件已经申明了中断,只用写中断函数,自己就会找到这个函数执行的

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
xyz549040622 + 5 赞一个!
13
wanyisq|  楼主 | 2016-5-5 20:01 | 只看该作者
问题找到了,BitAction这里出问题了,去掉就好了。结贴

使用特权

评论回复
14
mintspring| | 2016-5-5 21:15 | 只看该作者
外部中断IO:
1,设置输入模式,
2,再配置跟中断相关的寄存器。

使用特权

评论回复
15
ccw1986| | 2016-5-5 22:17 | 只看该作者
一次中断都没有进入吗,进去记得清中断

使用特权

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

本版积分规则

个人签名:--By Dr. Heinz Doofenshmirtz

40

主题

180

帖子

2

粉丝