外部中断怎么调用
-
大佬们:外部中断怎么调用
-
老板, 请看代码, 例程在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);
}