首页 > 其他分享 >ARM体系结构和接口技术(十)按键中断实验①

ARM体系结构和接口技术(十)按键中断实验①

时间:2024-07-21 16:00:22浏览次数:20  
标签:GICC GICD 接口技术 中断 -- 寄存器 ARM EXTI 体系结构

一、按键中断实验

在这里插入图片描述

(一)分析按键电路图

在这里插入图片描述

(二)芯片手册

二、按键中断实验分析

  • 注:NVIC----Cortx-M核
  • GIC----Cortx-A核

(一)查看所有外设的总线以及寄存器基地址

在这里插入图片描述

  • 注:GIC的总线是A7核的内部总线,也就是说,它是由ARM公司完成的

在这里插入图片描述

  • 注:EXTI的时钟源无需手动使能,它一直是使能状态

(二)RCC章节

在这里插入图片描述

(三)GPIO章节

(四)EXTI:扩展中断控制器

扩展中断和事件控制器(EXTI)通过可配置和直接的事件输入来管理单个CPU和系统唤醒。它为电源控制提供唤醒请求,并向CPU的NVIC生成中断请求以及向CPU的事件输入生成事件。对于每个CPU,需要一个额外的事件生成块(EVG)来生成CPU事件信号。
EXTI唤醒请求允许系统从STOP模式唤醒,并且允许CPU从CSTOP和CSTANDBY模式唤醒。
中断请求和事件请求生成也可以在RUN模式下使用。
EXTI还包括EXTI多路复用I/O端口选择。

EXTI由通过AHB接口访问的寄存器块、事件输入触发块、屏蔽块和EXTI多路复用器组成。
寄存器块包含所有EXTI寄存器。
事件输入触发块提供事件输入边沿触发逻辑。
屏蔽块提供事件输入到不同唤醒、中断和事件输出的分配,以及这些输出的屏蔽功能。
EXTI多路复用器为EXTI事件信号提供I/O端口选择。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中,CPU1代表MPU(主处理器单元),而CPU2代表MCU(微控制器单元)。

1. EXTI多路复用IO端口选择

在这里插入图片描述

1. EXTI_FTSR1寄存器

在这里插入图片描述

  • 注:EXTI最多支持76个输入的事件,EXTI_FTSR寄存器的每1个bit位配置1个输入的事件,一个寄存器最多配置32个,因此至少需要三个EXTI_FTSR寄存器。

  • 注:KEY1 --> PF9 --> EXTI9 --> EXTI9对应的输入事件的编号,
    查看21.3章节的表118,查看EXTI9对应的输入事件的编号
    在这里插入图片描述

2. EXTI_FPR1寄存器

在这里插入图片描述
在这里插入图片描述
读:判读下降沿中断是否发生
读0 : 表示没有下降沿触发中断请求发生
读1 : 表示有下降沿触发中断请求发生

写:清除中断挂载标志位(需要程序员手动清除)
写0:没有意思
写1:清除下降沿挂载标志位

3. EXIT_EXTI3寄存器

在这里插入图片描述
在这里插入图片描述

4. EXTI_C1IMR1寄存器

在这里插入图片描述
在这里插入图片描述

(五)GIC:全局中断控制器

在这里插入图片描述

1. GICD_CTLR : GICD control register

GICD层全局控制使能寄存器
在这里插入图片描述
在这里插入图片描述

2. GICD_ISENABLERx : GICD interrupt set-enable register x

GICD层中断设置使能寄存器
在这里插入图片描述

3. GICD_IPRIORITYRx :GICD interrupt priority register x

GICD层中断优先级寄存器,设置中断的优先级,编号越小中断优先级越高
在这里插入图片描述
在这里插入图片描述
GICD_IPRIORITYRx寄存器每5个bit位管理一个中断号。而GIC支持16个SGIs, 16个PPIs,
256个SPIs,共计288个中断号。GICD_IPRIORITYRx寄存器每一个寄存器最多管理4个中断号,
要想管理288个中断号,最少需要72(288 / 4 = 72)个寄存器

问题2:KEY1 --> PF9 --> EXTI9 --> 中断号99号
99号中断对应GICD_IPRIORITYRx寄存器的哪1个,哪5位?

中断号 / 4 = 商 ...... 余数
			 |			|---> (余数 * 8 + 3)对应寄存器5位中的最低位
			 |---> 寄存器的编号

99 / 4 = 24 ...... 3

GICD_IPRIORITYR24[31:27]位 配置99号中断的优先级,
	优先级的范围:0-31
	优先级的编号越小中断的优先级越高。

4. GICD_ITARGETSRx :GICD interrupt processor target register x

GICD层中断处理器目标分配寄存器,将中断信号转发给哪个CPU接口
在这里插入图片描述
GICD_ITARGETSRx寄存器每2个bit位管理一个中断号。而GIC支持16个SGIs, 16个PPIs,
256个SPIs,共计288个中断号。GICD_ITARGETSRx寄存器每一个寄存器最多管理4个中断号,
要想管理288个中断号,最少需要72(288 / 4 = 72)个寄存器

问题2:KEY1 --> PF9 --> EXTI9 --> 中断号99号
99号中断对应GICD_ITARGETSRx寄存器的哪1个,哪2位?

中断号 / 4 = 商 ...... 余数
			 |			|---> (余数 * 8)对应寄存器5位中的最低位
			 |---> 寄存器的编号

99 / 4 = 24 ...... 3

GICD_ITARGETSR24[25:24]位 配置99号中断的目标处理,
	0b01 : 分配中断给CPU0接口
	0b10 : 分配中断给CPU1接口		

5. GICD_ICPENDRx :GICD interrupt clear-pending register x

GICD层中断清除挂起寄存器,判读中断是否发生,清除中断挂起标志位
在这里插入图片描述

每一个bit位管理一个中断号,GIC支持16个SGIs,和256个SPIs,共计288个中断号。每个寄存器最多管理32个中断号,因此最少需要9个寄存器。
问题2:KEY1 --> PF9 --> EXTI9 --> 中断号99号
99号中断对应GICD_ICPENDRx寄存器的哪1个,哪1位?

中断号 / 32 = 商 ...... 余数
			  |			|---> 寄存器对应的位
			  |---> 寄存器的编号

99 / 32 = 3 ...... 3

GICD_ICPENDR3[3]位 配置99号中断,
	
	读0:zho

	写1:使能中断
	写0:没有影响

1. GICC_CTLR :GICC control register

GICC层全局中断控制使能寄存器

2. GICC_PMR : GICC input priority mask register

GICC输入中断优先级屏蔽寄存器。根据中断的优先级对中断进行屏蔽

3. GICC_IAR :GICC interrupt acknowledge register

GICC层中断应答寄存器,获取当前应答的中断的中断号,每个中断都有一个唯一的中断号。
中断号在芯片手册的21.2章节的表117中

4. GICC_EOIR :GICC end of interrupt register

GICC层中断结束寄存器,清除中断号

四、

在这里插入图片描述

标签:GICC,GICD,接口技术,中断,--,寄存器,ARM,EXTI,体系结构
From: https://blog.csdn.net/weixin_44254079/article/details/140584349

相关文章

  • ARM体系结构和接口技术(九)异常
    文章目录(一)异常模式(二)Cortex-A7核的异常处理流程分析1.保存现场(系统自动完成)2.恢复现场(程序员手动完成)3.异常处理流程(三)软中断验证异常处理函数异常就是处理器从用户模式切换到对应的异常模式的事件,进入异常模式之后执行对应的异常代码。异常源:引发处理器进入......
  • SolarMarker 正在使用水坑攻击与伪造的 Chrome 浏览器更新进行攻击
    在过去的三个月里,eSentire的安全研究团队发现信息窃密恶意软件SolarMarker都没有发动攻击,却在最近忽然重返舞台。此前,SolarMarker的运营者使用SEO投毒或者垃圾邮件来引诱受害者,受害者试图下载一些文档的免费模板,就被攻击者盯上了。最新的攻击中,攻击者开始利用伪造的Chro......
  • SolarMarker 正在使用水坑攻击与伪造的 Chrome 浏览器更新进行攻击
    在过去的三个月里,eSentire的安全研究团队发现信息窃密恶意软件SolarMarker都没有发动攻击,却在最近忽然重返舞台。此前,SolarMarker的运营者使用SEO投毒或者垃圾邮件来引诱受害者,受害者试图下载一些文档的免费模板,就被攻击者盯上了。最新的攻击中,攻击者开始利用伪造的Chro......
  • SolarMarker 正在使用水坑攻击与伪造的 Chrome 浏览器更新进行攻击
    在过去的三个月里,eSentire的安全研究团队发现信息窃密恶意软件SolarMarker都没有发动攻击,却在最近忽然重返舞台。此前,SolarMarker的运营者使用SEO投毒或者垃圾邮件来引诱受害者,受害者试图下载一些文档的免费模板,就被攻击者盯上了。最新的攻击中,攻击者开始利用伪造的Chro......
  • 对 Pyarmor 文件进行反混淆
    我有一个pythonpyarmor混淆文件,我想对其进行反混淆。pyarmor混淆文件包含以下内容我可以找到一种方法来取回包含在pyarmor中的源代码吗?frompyarmor_runtime_000000import__pyarmor____pyarmor__(__name__,__file__,b'PY000000/*....etc....)我尝试......
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号1
    本来打算找到工作再整理高级的题库,但一直没什么面试机会。宅在家里也不知道干些什么。索性就把高级的题库整理出来了。也算有头有尾。高级的题库更新之后,专业性更强了,不是真正从事这一行的,很难做出来。本人就是个小菜鸡,有一些题,我也不想不明白。题目的答案我尽可能的找到出......
  • 如何在 Pycharm IDE 中折叠或更好地组织长 Jupyter 笔记本单元?
    我正在使用包含大量单元格和输出的长Jupyter笔记本(.ipynb文件),在PyCharm中导航它们变得很麻烦。IDE似乎本身并不支持单元格折叠,这使得管理笔记本变得相当困难。是否有任何插件、设置或解决方法可以更好地组织或折叠PyCharm中的单元格?如何使我的笔记本文件在此IDE中......
  • Starmap 与 tqdm 结合?
    我正在做一些并行处理,如下所示:withmp.Pool(8)astmpPool:results=tmpPool.starmap(my_function,inputs)其中输入如下所示:[(1,0.2312),(5,0.52)...]即int和float的元组。代码运行良好,但我似乎无法将其包装在加载栏(tqdm)上,例如可以使用imap方......
  • 在 Windows 中将 EOF 发送到 PyCharm 控制台
    我正在Windows上学习PyCharmIDE。如何将文件结束信号发送到其调试控制台?CTRL+Z不起作用。Ctrl+Z确实在PyCharm的控制台中发送EOF(文件结束)。但是,它的行为方式可能与的预期不同。在大多数控制台(例如cmd或PowerShell)中,Ctrl+Z......
  • Pycharm安装详细教程(详细步骤)
    PyCharm是目前最流行、使用最广泛的PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、单元测试、版本控制等,此外,还提供了一些高级功能,以用于支持Dja......