刘
老板, 请看代码, 例程在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);
}