cortex-A7的内核
【按键中断实验原理】
实验目的:通过按键触发事件并产生中断然后控制对应的led灯亮或灭。
查询硬件原理图可知key1对应着PF9引脚,key2对应着PF7引脚,key3对应着PF8引脚。

并且根据原理图可知当按键按下后对应的引脚应该从高电平转变为低电平
从对应的引脚来看本次实验有需要使用到GPIO模块,由于本次实验结合了中断,所以还需要添加中断所使用的模块。
【中断的基本原理】
按键按下后会被GPIO模块捕获并传递到exti模块产生一个事件,随后由这个事件转换成中断传递到GIC模块对中断进行处理,对中断进行相关设置后交由CPU1或者CPU0处理并执行对应的代码。具体工作框图如下:

从框图中可以看出,本次实验需要使用到GPIO模块,EXTI模块、GIC模块、RCC使能模块。但是EXTI和GIC模块都不需要RCC使能,本次实验RCC只需要使能GPIO模块即可
【GPIO模块】
GPIO模块承担的角色是获取按键被按下的信息并产生一个事件交由EXTI模块处理。所以对GPIO模块只需要使能和设置输入模式即可。
RCC使能GPIOF组模块只需要将RCC_MP_AHB4ENSETR的第5位设置为1。

设置为输入只需要将GPIO_MODER寄存器的对应位设置为00即可

【EXTI模块】
exti模块的主要任务有:
1、设置是由哪个引脚产生事件
2、设置事件的检测模式(上升沿检测/下降沿检测)
3、取消对xxx事件的屏蔽
(4)、在每次执行完中断事件后都要清空一次事件继续标志

这三个模块分别有三个寄存器完成对应的操作
选择引脚:EXTI_EXTICRx寄存器
该寄存器用于选择引脚,但是在绑定引脚和产生的事件之前需要弄清楚引脚产生事件的机制,产生的事件一共有16种,正好对应了每组的16个引脚编号。也就是说Pxy产生EXTIy,如本次实验PF7、8、9对应EXTI7、8、9,产生的事件编号只与管脚编号有关和组别无关。该寄存器由8位控制一个管脚产生事件,一个寄存器只能管理4个管脚,所以一共是4个寄存器共同管理管脚。x对应的值是1-4.我们要设置的是7、8、9,所以就需要对EXTI_EXTICR2的第24-31位设置,EXTI_EXTICR3的第0-7位设置,EXTI_EXTICR2的第8-15位设置.查询手册后发现只需要将对应位设置成0x5即可。
选择中断模式:EXTI_FTSR1寄存器
该寄存器是设置下降沿触发的寄存器,这个寄存器每一位设置一个事件的触发方式,所以一个寄存器就可以管理16个事件,只需要把对应位设置位1即可将该事件设置为下降沿触发

本文详细介绍了在Cortex-A7架构下,如何通过GPIO模块捕获按键信号,EXTI模块处理中断,以及GIC模块进行中断处理和分配,以实现LED灯的控制。涉及到了中断基本原理、GPIO配置、EXTI事件设置和GICD/GICC层操作。
最低0.47元/天 解锁文章
2117

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



