外部中断怎么调用



  • 大佬们:外部中断怎么调用



  • 老板, 请看代码, 例程在examples\none_evm\ble_drivers_demo\下.
    #include "driver_exti.h"
    #include "driver_system.h"
    #include "driver_gpio.h"
    static enum ext_int_type_t exti_type ;
    attribute((section("ram_code"))) void exti_isr_ram(void)
    {
    uint32_t exti_src;

    exti_src = ext_int_get_src();
    ext_int_clear(exti_src);
    co_printf("exti_key:%x\r\n",exti_src);
    if( exti_src & BIT(EXTI_12) )
    {
        if(exti_type == EXT_INT_TYPE_LOW)
            exti_type = EXT_INT_TYPE_HIGH;
        else if(exti_type == EXT_INT_TYPE_HIGH)
            exti_type = EXT_INT_TYPE_LOW;
        ext_int_set_type(EXTI_12, exti_type);
    }
    else if( exti_src & BIT(EXTI_13) )
    {
    
    
    }
    

    }

    void demo_digital_exti(void)
    {
    co_printf("digital exti isr\r\n");

    system_set_port_mux(GPIO_PORT_D, GPIO_BIT_4, PORTD4_FUNC_D4);
    gpio_set_dir(GPIO_PORT_D, GPIO_BIT_4, GPIO_DIR_IN);
    system_set_port_pull( GPIO_PD4, true);
    ext_int_set_port_mux(EXTI_12,EXTI_12_PD4);
    ext_int_set_type(EXTI_12, EXT_INT_TYPE_LOW);
    ext_int_set_control(EXTI_12, 1000, 4);
    ext_int_enable(EXTI_12);
    
    system_set_port_mux(GPIO_PORT_D, GPIO_BIT_5, PORTD5_FUNC_D5);
    gpio_set_dir(GPIO_PORT_D, GPIO_BIT_5, GPIO_DIR_IN);
    system_set_port_pull( GPIO_PD5, true);
    ext_int_set_port_mux(EXTI_13,EXTI_13_PD5);
    ext_int_set_type(EXTI_13, EXT_INT_TYPE_NEG);
    ext_int_set_control(EXTI_13, 1000, 4);
    ext_int_enable(EXTI_13);
    
    exti_type = EXT_INT_TYPE_LOW;
    NVIC_SetPriority(EXTI_IRQn, 4);
    NVIC_EnableIRQ(EXTI_IRQn);
    

    }