1、《GD32H7xx系列软件开发指南》
2、例程《03_EXTI_Key_Interrupt_mode》
【学习步骤】
先查看原理图,这次学习使用KEY2键,IO为PC13。
通过学习例程,如果需要配置GPIO产生中断,需要通过如下几步进行配置
1、使能GPIO的时钟。
2、使能GPIOx_CTL的控制寄存器。配置为0b00,为输入模式。即清除第[27:26]为0。
3、配置GPIOx_PUD,根据原理图,在外部已经对他进行上位,内部设置为悬空模式。设置值为0b00:悬空模式
4、经查看开发指南,PC13的EXTI 源选择寄存器 3(SYSCFG_EXTISS3)
即配置SYSCFG_EXTISS3,奖EXTI3_SS的[7:4] 设置为0b110。
5、查看表 8-3. EXTI 触发源,
6、由于按键接下,需要配置下降沿来触发事件,因此配置下降沿触发使能寄存器 0(EXTI_FTEN0)FTEN13设置为1;
7、最后我们要使能中断事件立即触发,配置寄存器软件中断事件寄存器 0(EXTI_SWIEV0)SWIEV13位为1,激活 EXTI 线 x 软件中断/事件请求。
8、 需要配置为中断触发,配置中断使能寄存器 0(EXTI_INTEN0)的INTEN13位为1。
9、最后别忘了清除一下挂起寄存器 0(EXTI_PD0)的PD13写1来清除事件,以便在程序中可以正常使用。
在使用指南中,也清楚的写明了如何配置使用EXTI事件
当然,我们还需要打开总的exti中断,配置其中断优先
对于EXTI13中断的线,从中断向量表中可以看出EXTI13是在向量EXTI10-15向量表中。
所以配置如下:
/* enable and set key EXTI interrupt priority */
nvic_irq_enable(EXTI10_15_IRQn, 2U, 0U);
最后我们需要书写EXTI10_15_IRQHandler中断函数。在函数实现用户的处理程序。
【总结】
通过一晚上的学习,理清了EXTI中断的配置流程。认真的阅读了《开发指南》以及源代码,使得配置思路清晰起来,以前只是学习如何配置就行了,经过这次系统的学习,我还结合了STM32的中断教程来加深理解,最后对GD32H7xx系列的EXTI来处理中断有了一定的理解,知道如何配置,其背后的原理又是如何的,知所以然知其所以然。
下一步,我实际的书写代码,来验证配置的正确性。