没志青年
发布于 2025-08-21 / 19 阅读
0

GD32 中断系统

Cortex-M23 和 Cortex-M0 一样使用 NVIC,没有分组的概念,即没有抢占优先级和响应优先级的概念,只有两位,可配置0 ~3 优先级

数字越小,优先级越高。

中断号查询:

外部中断触发源:

GPIO 外部中断配置:

  rcu_periph_clock_enable(RCU_GPIOA);  // 打开GPIO时钟
  rcu_periph_clock_enable(RCU_CFGCMP); // 打开系统配置时钟

  gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, GPIO_PIN_1);    // 配置引脚
  nvic_irq_enable(EXTI0_1_IRQn, 1);                                         // 设置 EXTI 中断优先级
  syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN1);             // EXTI 映射
  exti_init(EXTI_1, EXTI_INTERRUPT, EXTI_TRIG_BOTH);                        // 配置 EXTI
  exti_interrupt_enable(EXTI_1);                                            // 使能 EXTI

void EXTI0_1_IRQHandler(void)
{
	if(exti_interrupt_flag_get(EXTI_1) == SET)        
	{                    
		// 处理代码...... 
		exti_interrupt_flag_clear(EXTI_1); // 清中断标志位            
	}
}

中断处理函数在 startup_xxx.s 文件中查看。