通过例程来测试下开发板的外部中断。设置为上升沿触发,LED指示灯,中断一次,状态反转一次。
有关外部中断的电路图
程序
主程序
int main(void)
{
systick_config();
rcu_periph_clock_enable(RCU_GPIOA);
//初始化LED
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, GPIO_PIN_1);
gpio_bit_reset(GPIOA, GPIO_PIN_1);
//初始化外部中断
gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_0);
rcu_periph_clock_enable(RCU_CFGCMP);
nvic_irq_enable(EXTI0_1_IRQn, 2U, 0U);
syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN0);
exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_RISING);
exti_interrupt_flag_clear(EXTI_0);
while(1)
{
}
}
外部中断处理
void EXTI0_1_IRQHandler(void)
{
if(RESET != exti_interrupt_flag_get(EXTI_0))
{
gpio_bit_toggle(GPIOA, GPIO_PIN_1);
}
exti_interrupt_flag_clear(EXTI_0);
}
运行