火龙吃果 发表于 2016-6-28 09:34:44

STM32F207的中断程序问题

编写了一个中断程序,编译没有问题,但是不知道为什么烧写到开发板上没有实验效果,请各位大侠帮我看看。。
这个是主程序
int main(void)
{
      LED_CONTROL_GPIO_Config();
      
      EXTI_key_config();
      
      while (1)
      {
               
      }
}

下面配置文件中的程序
希望用PF10的按键按下时让PF6外接的LED灯亮
#define ModeSwitch_Port                                 GPIOF
#define ModeSwitch_Pin                                 GPIO_Pin_10
#define ModeSwitch_RCC_AHBPeriph               RCC_AHB1Periph_GPIOF
<blockquote>#define LED1_Port<span class="Apple-tab-span" style="white-space:pre">                                                </span>GPIOF下面是中断程序

void EXTI15_10_IRQHandler(void)
{
                if(EXTI_GetITStatus(EXTI_Line10)!=RESET)
                {      
                        GPIO_SetBits(GPIOF , GPIO_Pin_6);

                        
                        EXTI_ClearFlag(EXTI_Line10);                  
                        EXTI_ClearITPendingBit(EXTI_Line10);
               
                }
}烧写后,按键一点反应都没有,不知道是哪里存在问题呢?


Dylan疾风闪电 发表于 2016-6-30 08:36:01

本帖最后由 Dylan疾风闪电 于 2016-6-30 08:39 编辑

对着这几个问题,检查一下自己的代码:

1、GPIO口的配置是否正确
2、EXTI寄存器是否配置,上升沿触发还是下降沿触发
3、中断是否开启

可以参考这个 (在链接转过去的20楼)例子 https://www.stmcu.org.cn/module/foru ... 9&page=2#pid2151820

RCC_APB2PeriphClockCmd(RCC_EXTI | RCC_LED | RCC_APB2Periph_AFIO, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;
/* Configure GPIO Led pin 6 as Output push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIO_LED, &GPIO_InitStructure);
/* Configure Key Button GPIO Pin as input pull-up (Key Button EXTI Line) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIO_EXTI, &GPIO_InitStructure);


//NVIC for EXTI
NVIC_GroupSet(NVIC_PriorityGroup_0, EXTI15_10_IRQn, 0);


/* Connect Key Button EXTI Line to Key Button GPIO Pin */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource10);
/* Configure Key Button EXTI Line to generate an interrupt on falling edge */
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line10;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

/* Generate software interrupt: simulate a falling edge applied on Key Button EXTI line */
EXTI_GenerateSWInterrupt(EXTI_Line10);

lzts 发表于 2016-6-30 10:16:37

检查程序, 如查不出问题时. 在死循环里面加一个10毫秒延时试下.

eagle0754 发表于 2016-6-30 11:04:31

代码不全,按二楼的方法查吧,还有启动文件有没有加对

Jason-252755 发表于 2016-6-30 17:19:07

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource10); 这个里面的GPIO_PortSourceGPIOB更改为GPIO_PortSourceGPIOF,你用的是PF10,配置确实PB10,当然是不行了。

huaiqiao 发表于 2016-6-30 21:58:09

需要确定下gpio初始化是否正确,还需要引用SYSCFG_EXTILineConfig,配置NVIC等。楼主代码不全

Dylan疾风闪电 发表于 2016-7-1 14:27:11

Jason-252755 发表于 2016-6-30 17:19
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource10); 这个里面的GPIO_PortSourceGPIOB更改为G ...

哥,一、二楼不是同一个人!!
另外,不是给他Ctrl+C/V的。只是排查的参考代码。
页: [1]
查看完整版本: STM32F207的中断程序问题