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

文章目录

  • 一、按键中断实验
    • (一)分析按键电路图
    • (二)芯片手册
  • 二、按键中断实验分析
    • (一)查看所有外设的总线以及寄存器基地址
    • (二)RCC章节
    • (三)GPIO章节
    • (四)EXTI:扩展中断控制器
      • 1. EXTI多路复用IO端口选择
      • 1. EXTI_FTSR1寄存器
      • 2. EXTI_FPR1寄存器
      • 3. EXIT_EXTI3寄存器
      • 4. EXTI_C1IMR1寄存器
    • (五)GIC:全局中断控制器
      • 1. GICD_CTLR : GICD control register
      • 2. GICD_ISENABLERx : GICD interrupt set-enable register x
      • 3. GICD_IPRIORITYRx :GICD interrupt priority register x
      • 4. GICD_ITARGETSRx :GICD interrupt processor target register x
      • 5. GICD_ICPENDRx :GICD interrupt clear-pending register x
      • -------------------------------------------------------------
      • 1. GICC_CTLR :GICC control register
      • 2. GICC_PMR : GICC input priority mask register
      • 3. GICC_IAR :GICC interrupt acknowledge register
      • 4. GICC_EOIR :GICC end of interrupt register
  • 三、

一、按键中断实验

在这里插入图片描述

(一)分析按键电路图

在这里插入图片描述

(二)芯片手册

二、按键中断实验分析

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

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

在这里插入图片描述

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

在这里插入图片描述

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

(二)RCC章节

在这里插入图片描述
只需要使能GPIOF的时钟源即可

(三)GPIO章节

将PF9设置为输入模式
在这里插入图片描述

(四)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层中断设置使能寄存器
在这里插入图片描述
每个寄存器管理32个事件,每一位对应一个事件
使用事件号/32=商...余数,商就是寄存器编号,余数就是位数

  • 注:无需加1,因为寄存器编号就是从0开始的

中断号
在这里插入图片描述

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 ...... 3GICD_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 ...... 3GICD_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 ...... 3GICD_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层中断应答寄存器,获取当前应答的中断的中断号,每个中断都有一个唯一的中断号。
在这里插入图片描述

4. GICC_EOIR :GICC end of interrupt register

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

三、

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024最新Uniapp的H5网页版添加谷歌授权验证

现在教程不少,但是自从谷歌升级验证之后,以前的老教程就失效了,现在写一个新教程以备不时之需。 由于众所周知的特殊原因,开发的时候一定注意网络环境,如果没有梯子是无法进行开发的哦~ clientID的申请方式我就不再进…

HTML开发笔记:3.图形化开发软件与模版网站

一、Google Web Designer 下载网址:webdesigner.withgoogle.com(得挂梯子) 可以编辑文字 可以插入图片,快捷键是ctrlshiftI 右侧“大纲”属性中可以调节大小 可以点击右上角在浏览器中预览效果: 二、模版网站 https://…

Python Flask入门到精通:详细教程和实战案例

前言 Flask是一个轻量级的Web框架,用于快速开发Web应用程序。它的设计理念是简洁、灵活和易于扩展,非常适合于从简单的单页应用到复杂的大型项目。通过Flask,可以创建各种Web应用程序,比如博客、电子商务网站、RESTful API等。 …

WordPress主题追格企业官网主题免费开源版V1.1.6

追格企业官网主题免费开源版由追格开发的一款开源wordpress主题,专为企业建站和追格企业官网小程序(开源版)PC配套而设计,功能集新闻动态、留言反馈、产品与服务、公司简介、联系我们等模块。

如何通过集成软件授权管理系统推动企业业务增长?

软件货币化已经成为许多企业商业成功的关键,随着全球数字化进程不断深入,其重要性也在不断增加。将许可解决方案优化集成到现有系统中,已成为从接收到订单到交付和激活许可的任何高效流程的基本要素。 软件货币化无处不在 无论是传统的软件企…

Vulnhub系列:Kioptix Level 1

1.环境配置 ifconfig kali机:192.168.26.128(不同kali机不同ip) 靶机:桥接 特别说明:有的小伙伴在打开虚拟机后,无法获取到靶机IP地址 这里特别说明:修改“Kioptix Level 1.vmx”配置文件中…

探索PyMuPDF:Python中的强大PDF处理库

探索PyMuPDF:Python中的强大PDF处理库 背景:为何选择PyMuPDF 在数字化时代,PDF文件因其跨平台的兼容性和对格式的严格保持而成为文档交换的通用格式。然而,处理PDF文件往往需要专门的工具或库。这就是PyMuPDF库的用武之地。PyMuP…

模方单体化功能联动3DMax能支持2018版本以上的3DMax吗?

答:目前还不支持,仅支持2018版本的 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建模功能,支持一键自动提取房屋结构,平…

【Python selenium过极验滑块】用自动化selenium 操作GEETEST极验滑块,简单粗暴

文章日期:2024.07.24 使用工具:Python 文章类型:自动化过极验滑块 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js 标准算法&…

Python自动化测试之Selenium各浏览器驱动下载网址

在自动化测试领域,Selenium无疑是一个不可或缺的工具。它允许开发者编写脚本来模拟用户在浏览器中的操作,从而进行自动化测试。然而,为了使用Selenium控制不同的浏览器,我们需要安装相应的浏览器驱动(WebDriver&#x…

企业利用AI智能名片S2B2C商城小程序参与社区团购的风险与机遇分析

摘要 在新零售浪潮的推动下,社区团购以其独特的商业模式迅速崛起,成为连接消费者与供应商的重要桥梁。企业纷纷探索如何有效利用这一新兴渠道,以扩大市场份额、提升品牌影响力。AI智能名片S2B2C商城小程序的引入,为企业参与社区团…

maven archetype

1.简介 maven脚手架是为了创建一个项目模板&#xff0c;以后新建项目都能够复用该模板 maven中模板引擎使用的是velocity,在文件中可以使用它的语法获取变量等操作 2.实现 单模块脚手架实现 pom.xml <?xml version"1.0" encoding"UTF-8"?> &…

windows下实现mongodb备份还原

添加环境变量 把mongodb安装目录下的bin路径添加到环境变量的path路径: 备份库 打开CMD&#xff0c;执行以下命令&#xff1a; mongodump -u test -p test -d test -o D://backup_mongodb//20220706 –gzip 参数说明&#xff1a; -u 用户名 -p 密码 -d 需要备份的库名称…

MongoDB教程(二十一):MongoDB大文件存储GridFS

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、GridFS…

学习笔记(数据结构:链表 栈)3

fun为回调函数由主函数决定 栈: 栈是限定仅在表尾进行插入和删除操作的线性表。 先进后出、后进先出 栈顶:允许操作的一端 栈底:不允许操作的一端 入栈&#xff0c;出栈。 顺序栈 链式栈 1.创建 CreateSeqStack 2.销毁 DestroySeqStack 3.判断是否为空栈 IsEm…

AD7606采集控制

过采样&#xff1a;其效果就是在ADC之后增加数字滤波器的功能

观测云加入华为云「新加坡云联盟」,引领亚太创新潮流

7月19日&#xff0c;「新加坡云联盟」在华为云新加坡峰会2024上正式宣告成立。这一创新的联合不仅是新加坡乃至整个亚太地区云服务领域的重要里程碑&#xff0c;更是全球数字化转型进程中的关键一步。 观测云作为联盟的首批成员之一&#xff0c;在成立仪式上精彩亮相&#xff0…

音视频入门基础:PCM专题(3)——使用Audacity工具分析PCM音频文件

音视频入门基础&#xff1a;PCM专题系列文章&#xff1a; 音视频入门基础&#xff1a;PCM专题&#xff08;1&#xff09;——使用FFmpeg命令生成PCM音频文件并播放 音视频入门基础&#xff1a;PCM专题&#xff08;2&#xff09;——使用Qt播放PCM音频文件 音视频入门基础&am…

Centos7下安装配置最新版本Jenkins

1、基础环境配置 1.1 服务器下载Jenkins安装包 下载地址&#xff1a;Download and deploy 下载命令&#xff1a;wget https://get.jenkins.io/war-stable/2.452.3/jenkins.war 1.2 服务器安装配置JDK Jenkins 是基于 Java 语言开发的&#xff0c;因此需要 Java 运行环境支…

MQ传递用户信息

theme: nico 你们好&#xff0c;我是金金金。 场景 购物车里面有5个商品&#xff0c;用户勾选了并且提交订单了&#xff0c;此时需要删除购物车对应勾选的商品&#xff0c;mq的话涉及到传递用户信息~因为删除对应的购物车商品是需要传递用户信息来知晓对应用户的 生产者 消费者…