提示:其理论知识请见EXIT原理
EXIT常规流程和示例代码
- 一、EXIT配置流程
- 二、示例代码
- 三、EXIT寄存器
- 四、EXIT库函数代码
-
- exti_init():初始化EXTI线x
- exti_interrupt_enable():EXTI线x中断使能
- exti_interrupt_disable:EXTI线x中断禁能
- exti_flag_get():获取EXTI线x标志位 (获取exti_pd寄存器中对应exti线的值)
- exti_flag_clear:清除EXTI线x标志位(将exti_pd寄存器中对应exti线的值置为0)
- exti_interrupt_flag_get():获取EXTI线x中断标志位
- exti_interrupt_flag_clear():清除EXTI线x中断标志位
- exti_init():初始化EXTI线x
- exti_init():初始化EXTI线x
- exti_init():初始化EXTI线x
- exti_init():初始化EXTI线x
- exti_init():初始化EXTI线x
- exti_init():初始化EXTI线x
一、EXIT配置流程
检测按键上升沿来出发中断。
注意:GPIO管脚采用复用IO模式,选择GPIO的管脚。浮空输入模式。
二、示例代码
//按键的GPIO初始化
static void KeyGpioInit(void)
{
//GPIOA 对于的PIN0初始化
rcu_periph_clock_enable(RCU_GPIOA);
gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_2MHZ, GPIO_PIN_0);
//GPIOAG 对于的PIN13和PIN14初始化
rcu_periph_clock_enable(RCU_GPIOG);
gpio_init(GPIOG, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_2MHZ, GPIO_PIN_13);
gpio_init(GPIOG, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_2MHZ, GPIO_PIN_14);
}
static void KeyExtiInit(void)
{
//################GPIOA口对于的pin13和pin14############
/*使能EXTI时钟*/
rcu_periph_clock_enable(RCU_AF);
//I/O连接到EXTI线
gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOA, GPIO_PIN_SOURCE_0);
/*exit的初始化 配置上升/下降沿*/
exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_FALLING);//INTERRUPT中断的意思
/*清除标志*/
exti_interrupt_flag_clear(EXTI_0);