这个在demo里没找到,有相关编程要求的可以直接套用。
先简单阐述一下,实际上就是用几个位来控制一根软件触发通道的中断情况。以GD32H7系列为例,中断使能寄存器EXTI_INTEN就是是否允许这条线启用中断,和平时的enableDMA一个意思。而允许中断以后,该如何触发,是上升沿、下降沿、还是对应的软件中断触发,就看具体的需求。我这里演示软件中断。
EXTI 触发源一共有38个通道,0-15是GPIO触发,也就是对应的GPIO可以控制高低电平模拟上升沿,下降沿。我这里直接采用软件中断事件寄存器 (EXTI_SWIEV)。软件中断事件寄存器 0(EXTI_SWIEV0),控制0-31的通道,1控制32-37通道。我这里以通道0为例。
在这里插入图片描述
代码编写:
1.首先使能中断EXTI0
nvic_irq_enable(EXTI0_IRQn, 1U, 0U);
2.允许通道0启用中断
EXTI_INTEN0 = 0x00000001;
3. 激活软件触发通道0,也就是触发中断
EXTI_SWIEV0 = 0x00000001;
4.禁用软件触发通道0,也就是退出中断
EXTI_SWIEV0 = 0x00000000;
而要执行的中断内容,直接写入中断函数即可
void EXTI0_IRQHandler(void)
{
要执行的中断内容
}
我刚接触GD芯片,觉得这种开启中断的方式简直是万精油。