未分类 · 2023年2月3日

GD32E230单片机中断函数编写模板

1、开启时钟与GPIO配置
2、绑定中断
3、编写中断函数

1-2、开启时钟与GPIO配置、绑定中断

void button_init()
{
    //使能时钟
    rcu_periph_clock_enable(RCU_GPIOA);
    //配置GOIO口
    gpio_mode_set(GPIOA,GPIO_MODE_INPUT,GPIO_PUPD_NONE,GPIO_PIN_0);
    //开中断时钟
    rcu_periph_clock_enable(RCU_CFGCMP);
    //配置中断优先级
    nvic_irq_enable(EXTI0_1_IRQn,0);
    //绑定GPIO口
    syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXTI_SOURCE_PIN0);
    //初始化中断线
    exti_init(EXTI_0,EXTI_INTERRUPT,EXTI_TRIG_RISING);
    //清除标志位
    exti_interrupt_flag_clear(EXTI_0);
}

GD32E320没有优先级分组,因此不需要配置

3、编写中断函数

void EXTI0_1_IRQHandler(void)
{
     if (exti_interrupt_flag_get(EXTI_0) ==1) 
        {
            if(gpio_output_bit_get(GPIOA,GPIO_PIN_8)==SET)
            {
                gpio_bit_reset(GPIOA,GPIO_PIN_8);
            }
            else
            {
                gpio_bit_set(GPIOA,GPIO_PIN_8);
            }

            exti_interrupt_flag_clear(EXTI_0);  
        }
}