wanyisq 发表于 2016-5-4 09:46:22

F103外部中断不能执行

接触32没多久,昨天写了一个外部中断的实验,怎么调试都不能执行中断,看了书上的例程,是一样的。不知道问题在哪,求助
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_IPU;
      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);
               
      }
}

mark0668 发表于 2016-5-4 12:48:42

没开内核中断.

wanyisq 发表于 2016-5-4 12:54:29

mark0668 发表于 2016-5-4 12:48
没开内核中断.

什么是内核中断,怎么开启

mark0668 发表于 2016-5-4 13:10:38

wanyisq 发表于 2016-5-4 12:54
什么是内核中断,怎么开启

不好意思,看错了.

wozaihuayu 发表于 2016-5-4 15:51:40

怎么看的main函数中没有系统初始化?中断向量也没有设置?main函数一开始加上这两句试试

        SystemInit();          //初始化系统时钟       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

riansum 发表于 2016-5-4 20:04:48

系统时钟,都没有写:lol

wanyisq 发表于 2016-5-4 21:16:39

wozaihuayu 发表于 2016-5-4 15:51
怎么看的main函数中没有系统初始化?中断向量也没有设置?main函数一开始加上这两句试试

        SystemInit();    ...

。。。。。。
时钟没设置是因为有默认的,内部时钟,
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);优先级也设置了

wanyisq 发表于 2016-5-4 21:17:27

riansum 发表于 2016-5-4 20:04
系统时钟,都没有写

我看你比我这个新手还新手啊,这些高级点的芯片都有内部默认的时钟的

xmshao 发表于 2016-5-4 23:15:15

STM32固件库里有现存的EXTI中断工程,看看人家怎么写的。
将流程比对下。

wanyisq 发表于 2016-5-5 20:05:15

问题解决了BitAction去掉就好了:L。。。。。
页: [1]
查看完整版本: F103外部中断不能执行