在上一节我们编写完成了中断驱动文件和中断驱动头文件,那么这一讲我们将继续中断实验
下面就是GPIO的中断设置,第一步要设置中断GPIO的触发方式,首先我们先看到寄存器,一共有GPIOx_ICR1和ICR2,

图如上,ICR1或者ICR2可以看出图中都是由两个bit来描述一个IO口,相当于一个寄存器控制16个IO口,两个的话也就是32个IO口

可以看出,bit31-bit30的作用翻译过来就是,此寄存器控制GPIO中断15功能的激活条件,然后像寄存器中写入00,01作用就是,中断的触发模式,分别是低电平,高电平,上升沿,下降沿触发
对于我们需要完成的实验,首先我们看到开发板的原理图,既然是通过中断的方式点亮LED等,那么意思就是当按键按下的时候LED灯亮,那么按键按下是属于哪种形式的触发方式?

这里需要说明的是,各种触发条件的条件以及特性和大致应用场景,在如下图按键按下额时候,如果产生低电平那么就可以触发条件,那么很明显对应的就是,下降沿触发,然后下面的表格对应的是,低电平触发,高电平触发,上升沿触发,下降沿触发

KEY0按键对应的IO是,UART1 CTS,需要讲这个引脚设置为下降沿触发

然后我们看到下一个寄存器,GPIO_IMR 包含了针对每个中断线的屏蔽位(masking bits),具体意思是,用于控制哪些GPIO引脚的中断信号应该被处理器接收和处理,哪些应该被忽略。
GPIO_IMR寄存器中的每一位都对应一个GPIO引脚的中断屏蔽控制。如果某位被设置为1,则对应的GPIO引脚的中断请求将被屏蔽,即该引脚的中断信号不会被处理器响应;如果某位被设置为0,则对应的GPIO引脚的中断请求是使能的,即该引脚的中断信号可以被处理器接收和处理。
然后这里继续看下一个我们需要用到的寄存器,GPIOx_ISR这个寄存器的作用就是,每个bit位对应一个IO口,一共也就是对应32的IO,如果某个IO口检测到中断产生,则将对应的bit位置1
但是在中断产生过后,这个中断标志位肯定是需要被清0的,但是对于这个寄存器而言,这个寄存器是需要通过写1来清0,并不是直接写0

最低0.47元/天 解锁文章
970

被折叠的 条评论
为什么被折叠?



