求助:为什么PA2外部中断进不去?

[复制链接]
2109|7
 楼主| hp4700 发表于 2018-1-25 22:24 | 显示全部楼层 |阅读模式
思路:使用PA2作为外部中断检测PWM的上升沿和下降沿。观察相关寄存器的值,PA2上发生了中断(PD2是为1),但是始终进入不了 EXTI2_3_IRQHandler函数,不知什么原因。程序设置如下:
//=============================================================================
// void GPIO_exit_init(void)
// Description:  
//     
//             1、配置PA2/TIM2_CH3为外部中断
//
// Calls:
// Called by:
// Input:
//        
// Output:  
// Return:
// Others:
//=============================================================================
void GPIO_exit_init(void)
{
    // 设置引脚PA2为输入模式,并使能上拉功能
    gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP,GPIO_PIN_2);
   
    // 设置中断线:GPIOA的PA2
    syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXTI_SOURCE_PIN2);
   
    exti_init(EXTI_2,               // 外部中断通道:2
              EXTI_INTERRUPT,       // 中断类型:外部中断
              EXTI_TRIG_BOTH);      // 触发类型:上升沿和下降沿都触发
              
    // 使能PA2中断事件
    exti_event_enable(EXTI_2);
   
    // 使能外部中断
    exti_interrupt_enable(EXTI_2);

}  // end of GPIO_General_init() function

void EXTI2_3_IRQHandler(void)
{
    delay_decrement();       // 测试用
}

评论

中断之后要清楚  发表于 2019-4-29 18:14
wangjiahao88 发表于 2018-1-26 09:05 | 显示全部楼层
我感觉 可以查看一下 BSP.

另外 你的板子是自己做的还是官方的DEMO啊?
zya888 发表于 2018-1-26 10:27 | 显示全部楼层
应该会进一次吧,PWM不接入,先运行程序,然后在中断程序里打断点,再把PWM信号接入,观察下
给力芯片 发表于 2018-1-26 11:05 | 显示全部楼层
我好像记得进入中断要清除一下中断标志位的吧
 楼主| hp4700 发表于 2018-1-26 21:02 | 显示全部楼层
问题已解决,谢谢大家!相关程序如下:
//=============================================================================
// void GPIO_exit_init(void)
// Description:  
//     
//             1、配置PA2/TIM2_CH3为外部中断
//
// Calls:
// Called by:
// Input:
//        
// Output:  
// Return:
// Others:
//=============================================================================
void GPIO_exit_init(void)
{
    // 设置引脚PA2为输入模式,并使能上拉功能
    gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP,GPIO_PIN_2);
   
    // 使能PA2中断,并设置为最低优先级
    nvic_irq_enable(EXTI2_3_IRQn, 2, 0);
   
    // 设置中断线:GPIOA的PA2
    syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXTI_SOURCE_PIN2);
   
    exti_init(EXTI_2,               // 外部中断通道:2
              EXTI_INTERRUPT,       // 中断类型:外部中断
              EXTI_TRIG_BOTH);      // 触发类型:上升沿和下降沿都触发
            
    // 清除PA2中断标志
    exti_interrupt_flag_clear(EXTI_2);   
   
    // 使能PA2中断事件
    exti_event_enable(EXTI_2);
   
    // 使能外部中断
    exti_interrupt_enable(EXTI_2);

}    // end of GPIO_exit_init() function
waitmoney 发表于 2019-4-22 22:19 | 显示全部楼层
标志位不需要专门清
lvben5d 发表于 2019-4-24 09:06 | 显示全部楼层
楼主这个是啥型号的GD  这个库  我咋没见过。 我用过F103 130 E103 库函数都不是这个样子的。  anyway, 库的FIRELIB里的基本示例  都应该有正确的代码。 先找example
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部