中断配置
uint8_t flag = 0;
void exti (void)
{
rcu_periph_clock_enable(RCU_GPIOD);
gpio_init(GPIOD, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
rcu_periph_clock_enable(RCU_AF);
nvic_irq_enable(EXTI2_IRQn,2,2);
gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOD, GPIO_PIN_SOURCE_2);
exti_init(EXTI_2,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
exti_interrupt_enable(EXTI_2);
}
void EXTI2_IRQHandler (void)
{
if(exti_interrupt_flag_get(EXTI_2) == 1)
{
flag = 1;
exti_interrupt_flag_clear(EXTI_2);
}
}
主函数
extern int flag;
int main(void)
{
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
systick_config();
exti();
led_config();
gpio_bit_set(GPIOB,GPIO_PIN_1);
gpio_bit_set(GPIOB,GPIO_PIN_0);
while(1)
{
if(flag == 1)
{
flag = 0;
led_toggle();
}
}
}