chendiand 发表于 2015-3-15 19:39:55

stm32f0不能进入外部中断

本帖最后由 chendiand 于 2015-3-15 19:57 编辑

今天想用按键进入外部中断,却不能进入中断,求大神指导,中断函数:

#include "exti.h"

void EXTI_KEY_Init(void)
{
      GPIO_InitTypeDef GPIO_InitStruct;
      EXTI_InitTypeDef EXTI_InitStruct;
      NVIC_InitTypeDef NVIC_InitStruct;
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);      
      
      NVIC_InitStruct.NVIC_IRQChannel=EXTI4_15_IRQn;
      NVIC_InitStruct.NVIC_IRQChannelPriority=0x00;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
      NVIC_Init(&NVIC_InitStruct);
      
      GPIO_InitStruct.GPIO_Pin=13;
      GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;
      GPIO_InitStruct.GPIO_Speed=GPIO_Speed_Level_2;
      GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
      GPIO_Init(GPIOC,&GPIO_InitStruct);
      
      SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC,EXTI_PinSource13);
EXTI_InitStruct.EXTI_Line=EXTI_Line13;
      EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
      EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;
      EXTI_InitStruct.EXTI_LineCmd=ENABLE;
      EXTI_Init(&EXTI_InitStruct);
}主函数

int main(void)
{
SystemInit();
      Led_Init();
      GPIO_ResetBits(GPIOA ,GPIO_Pin_5);
      EXTI_KEY_Init();

while (1)
{

}
} stm32f0xx_it.c中配置函数:void PendSV_Handler(void)
{
}

/**
* @briefThis function handles SysTick Handler.
* @paramNone
* @retval None
*/
void SysTick_Handler(void)
{
}
void EXTI4_15_IQRHandler(void)
{
      if(EXTI_GetITStatus(EXTI_Line13)!=RESET)
      {
                GPIO_WriteBit(GPIOA, GPIO_Pin_5,
                           (BitAction)((1-GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_5))));
                EXTI_ClearFlag(EXTI_Line13);
      }
}


chendiand 发表于 2015-3-15 19:40:33

内核是M0的

kqh1120 发表于 2015-3-15 19:57:30

优先级设置对了没有。有没有优先级冲突。

chendiand 发表于 2015-3-15 20:00:52

zfz0122 发表于 2015-3-15 19:57
优先级设置对了没有。有没有优先级冲突。

优先级设为0了,而且就这一个中断啊

_ilikerome_ 发表于 2015-3-16 09:15:55

哎,为嘛用库,俺都看不懂。。。

废鱼 发表于 2015-3-16 09:53:23

楼主用的下降沿,电平由高变低的时候触发。

名字不好起 发表于 2015-3-16 14:34:03

stary666 发表于 2015-3-16 16:00:21

;P;P;P;P;P

chendiand 发表于 2015-3-16 17:28:26

问题找到了,Stm32f0xx_it.c文件中,外部中断函数写错了,被默认为一个普通函数,所以不能够进入外部中断,建议大家写外部中断的时候.s 文件中复制,避免写错

chendiand 发表于 2015-3-16 17:28:54

同时谢谢大家的帮助

cypan 发表于 2020-7-28 21:02:09

chendiand 发表于 2015-3-16 17:28
问题找到了,Stm32f0xx_it.c文件中,外部中断函数写错了,被默认为一个普通函数,所以不能够进入外部中断, ...

楼主,我也是这样,配置函数看了N遍了。就是不进中断函数。还没解决,求指点。
页: [1]
查看完整版本: stm32f0不能进入外部中断