打印
[STM32F2]

外部中断的问题

[复制链接]
935|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ge_yuer|  楼主 | 2016-4-6 12:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
急求,我用STM32F207芯片,配置PC4管脚为外部中断,我初始化配置和处理有什么问题吗?求解答。进不了中断。
void init_pc4(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
//        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
       
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
       
        NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC,EXTI_PinSource4);
       
        EXTI_InitTypeDef EXTI_InitStruct;
       
        EXTI_InitStruct.EXTI_Line = EXTI_Line4;
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStruct);
       
        EXTI_ClearITPendingBit(EXTI_Line4);
}

void EXTI4_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line4) != RESET)
        {
                EXTI_ClearFlag(EXTI_Line4);
                //处理函数
                proc_func();
                EXTI_ClearITPendingBit(EXTI_Line4);       
        }
}
沙发
mmuuss586| | 2016-4-6 15:32 | 只看该作者
看了下程序没问题,是不是引脚连错了呀;

使用特权

评论回复
板凳
ge_yuer|  楼主 | 2016-4-6 15:57 | 只看该作者
mmuuss586 发表于 2016-4-6 15:32
看了下程序没问题,是不是引脚连错了呀;

引脚没错的,之前我程序是用查询处理的,现在改为中断,就是配置后没反应,不知道什么情况了。

使用特权

评论回复
地板
airwill| | 2016-4-6 20:26 | 只看该作者
参考一下例程库嘛
void EXTILine0_Config(void)
{
  EXTI_InitTypeDef   EXTI_InitStructure;
  GPIO_InitTypeDef   GPIO_InitStructure;
  NVIC_InitTypeDef   NVIC_InitStructure;

  /* Enable GPIOA clock */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  /* Enable SYSCFG clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  
  /* Configure PA0 pin as input floating */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Connect EXTI Line0 to PA0 pin */
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);

  /* Configure EXTI Line0 */
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

  /* Enable and set EXTI Line0 Interrupt to the lowest priority */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

这个你好像没有  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

使用特权

评论回复
5
ccw1986| | 2016-4-6 20:38 | 只看该作者
中断里面有没有开中断呢?还有对应的中断对吗

使用特权

评论回复
6
ge_yuer|  楼主 | 2016-4-7 09:15 | 只看该作者
airwill 发表于 2016-4-6 20:26
参考一下例程库嘛
void EXTILine0_Config(void)
{

那一句加了,调试还是不行。程序都在上面呢,我把那句屏蔽了,加上也不行。

使用特权

评论回复
7
ge_yuer|  楼主 | 2016-4-7 09:16 | 只看该作者
ccw1986 发表于 2016-4-6 20:38
中断里面有没有开中断呢?还有对应的中断对吗

我的相关程序都在上面了,PC4外部中断对应的不就是EXTI4吗?

使用特权

评论回复
8
ge_yuer|  楼主 | 2016-4-7 09:49 | 只看该作者
airwill 发表于 2016-4-6 20:26
参考一下例程库嘛
void EXTILine0_Config(void)
{

加了那句也是一样,没效果,进不去呢。

使用特权

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

本版积分规则

11

主题

40

帖子

0

粉丝