打印
[STM32F1]

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

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

#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,ENABLE);
        
        GPIO_EventOutputConfig(GPIO_PortSourceGPIOD,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);
}        

一个很简单的进中断里点亮一个灯的实验,但是只有GPIOA可以进中断,其他的B,C,D,等等都进不了中断,这是怎么回事啊?只要把字母“A”改成别的字母就进不了中断了。
沙发
kangbin334|  楼主 | 2015-9-4 21:36 | 只看该作者
以下是led_init();的部分

#include "stm32f10x.h"
#include "led.h"


void led_init(void)

{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
       
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
       
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
        GPIO_Init(GPIOD,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
        GPIO_Init(GPIOD,&GPIO_InitStructure);
       
       
       
       
       
       
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOF,GPIO_Pin_1);
  GPIO_SetBits(GPIOF,GPIO_Pin_2);
  GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
  GPIO_SetBits(GPIOF,GPIO_Pin_6);
  GPIO_SetBits(GPIOF,GPIO_Pin_7);


}

使用特权

评论回复
板凳
logokfu| | 2015-9-5 05:59 | 只看该作者
上个帖子已经回答你问题了。

使用特权

评论回复
地板
huangqi412| | 2015-9-5 08:48 | 只看该作者
没有选端口……

使用特权

评论回复
5
会飞の鱼| | 2015-9-5 10:16 | 只看该作者
在做外部中断的时候只有用PA口才能触发中断??不至于吧。。。。

使用特权

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

本版积分规则

17

主题

50

帖子

0

粉丝