打印
[STM32F1]

为什么在做外部中断的时候只有用PA口才能触发中断呢?

[复制链接]
2399|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kangbin334|  楼主 | 2015-9-4 23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kangbin334 于 2015-9-4 23:14 编辑

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "stm32f10x_exti.h"
#include "stm32f10x_it.h"

int main(void)

{
        
        led_init();
        delay_init();
        
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOC,ENABLE);
        
        GPIO_EventOutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource0);
        
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
        
        
        EXTI_InitTypeDef aaa;
        aaa.EXTI_Line=EXTI_Line0;
        aaa.EXTI_LineCmd=ENABLE;
        aaa.EXTI_Mode=EXTI_Mode_Interrupt;
        aaa.EXTI_Trigger=EXTI_Trigger_Falling;
        EXTI_Init(&aaa);
        
        
        NVIC_InitTypeDef bbb;
        bbb.NVIC_IRQChannel=EXTI0_IRQn;
        bbb.NVIC_IRQChannelCmd=ENABLE;
        bbb.NVIC_IRQChannelPreemptionPriority=0;
        bbb.NVIC_IRQChannelSubPriority=0;
        NVIC_Init(&bbb);
        
        EXTI_ClearITPendingBit(EXTI_Line0);
        
        while(1);
}




void EXTI0_IRQHandler(void)
        
{

        GPIOF->ODR=0xfffd;
        
  EXTI_ClearFlag(EXTI_Line0);
        EXTI_ClearITPendingBit(EXTI_Line0);
}        

这个程序什么都不用改,只要把中断口PC0换成PA0就能进中断,而且现在是只有PA0能进中断。
        





沙发
logokfu| | 2015-9-5 05:53 | 只看该作者
GPIO_EventOutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource0);
错,你这里不应该用EVENT事件,而应该用中断才行。你这样还是没有设置到中断源。但是寄存器复位时默认是0,0还是代表着PA组。所以你这样PA0可以响应中断就是纯属巧合。

使用特权

评论回复
板凳
logokfu| | 2015-9-5 05:55 | 只看该作者
也就是说你这句话是不起作用的,即使你把删掉PA0照样可以中断。

使用特权

评论回复
地板
songchenping| | 2015-9-5 12:39 | 只看该作者
都是配置惹的祸啊

使用特权

评论回复
5
wowow| | 2015-9-5 20:32 | 只看该作者
用库函数的话对照一下自带的例程,用寄存器查看一下手册的9.4.3  External interrupt configuration register 1 (AFIO_EXTICR1)

使用特权

评论回复
6
kangbin334|  楼主 | 2015-9-6 19:49 | 只看该作者
**kfu 发表于 2015-9-5 05:53
GPIO_EventOutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource0);
错,你这里不应该用EVENT事件,而应该用 ...

非常感谢**kfu的回答,正如您所说的那样,改过来就好用了,深表感谢,也同时谢谢其他人。

使用特权

评论回复
7
kangbin334|  楼主 | 2015-9-6 19:52 | 只看该作者
**kfu 发表于 2015-9-5 05:55
也就是说你这句话是不起作用的,即使你把删掉PA0照样可以中断。

怎么不能结贴啊?我已经把分都分配给了**kfu大神了,还是说分手分配未完?

使用特权

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

本版积分规则

17

主题

50

帖子

0

粉丝