打印

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

[复制链接]
1801|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 回复TA
中断之后要清楚 
沙发
wangjiahao88| | 2018-1-26 09:05 | 只看该作者
我感觉 可以查看一下 BSP.

另外 你的板子是自己做的还是官方的DEMO啊?

使用特权

评论回复
板凳
zya888| | 2018-1-26 10:27 | 只看该作者
应该会进一次吧,PWM不接入,先运行程序,然后在中断程序里打断点,再把PWM信号接入,观察下

使用特权

评论回复
地板
给力芯片| | 2018-1-26 11:05 | 只看该作者
我好像记得进入中断要清除一下中断标志位的吧

使用特权

评论回复
5
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

使用特权

评论回复
6
waitmoney| | 2019-4-22 22:19 | 只看该作者
标志位不需要专门清

使用特权

评论回复
7
lvben5d| | 2019-4-24 09:06 | 只看该作者
楼主这个是啥型号的GD  这个库  我咋没见过。 我用过F103 130 E103 库函数都不是这个样子的。  anyway, 库的FIRELIB里的基本示例  都应该有正确的代码。 先找example

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝