硬件开发2-ARM裸机开发3-IMX6ULL - 引入中断

一、铺垫引入中断 → 按键

 1、概要:

            实现按键控制发光二极管和蜂鸣器

             输入类型的外设:按键(key)

2、参考手册内容完成配置过程

(1)key 按键原理图

(2)core 内核中命名 -- UART1 CTS

(3)复用功能设置

(4)电气特性配置

        一般顺序:12 - -> 13 - -> 14-15

        阻值不明确时通常选择10K,如若没有选择阻值相近于10k的(所以选择22k的[11])

1)上拉电阻

2)速率

3)综合

(5)引脚方向配置

    GPIO1->GDIR &= ~(1 << 18);        //仅需要将GPIO的第18号引脚 置1

3、代码实现

4、实验现象

        能够实现按下按键是,蜂鸣器响应,led亮。但是会出现按下按有时无法立刻响应,是由于现有模式是轮询模式,cpu无法在按键按下时就立刻进行响应,也许在你按下按键时刻,cpu正在别的地方检测,所以会出现延时性。

        由此引出,引入中断。当按下按键时刻,能够立刻响应。中断:cpu在轮询中有更为紧要的事情打断,保护现场,去执行中断任务,当执行完毕后,回到现场,恢复形成继续进行刚刚被打断前的任务。

二、中断的引入

1、概念

        中断:CPU能打断当前正在进行的工作,去处理更为紧急的任务,并且在处理完中断任务后,能回到原先的地方继续工作

2、流程

        (1)中断源发出中断请求。

        (2)CPU检查是否响应中断以及该终端是否被屏蔽。

        (3)检查当前产生的中断的中断优先级。

        (4)保护现场

        (5)执行中断服务函数

        (6)恢复现场

3、流程图

        由下图可知:想要实现中断还需要GIC控制器作为中间桥梁进行传递(秘书处)

 (1)中断基本流程

  (2) 三类分发器 SGI、PPI、SPI

4、中断控制器GIC

(1)概念

        ARM处理器中管理中断的硬件模块,负责接收外设中断请求(IRQ),根据优先级、目标核和安全属性分发到CPU核心;

(2)类型

        SGI(Software Generated Interrupt):核间通信中断(ID0-15),通过写寄存器,触发由软件触发引起的中断,通过向寄存器GICD_SGIR 写入数据来触发,系统会使用 SGI 中断来完成多核之间的通信

        PPI(Private Peripheral Interrupt):核私有中断(ID16-31),如定时器中断,我们说了 GIC 是支持多核的,每个核肯定有自己独有的中断。这些独有的中断肯定是要指定的核心处理,因此这些中断就叫做私有中断

        SPI(Shared Peripheral Interrupt):共享外设中断(ID32-1019),如GPIO、UART中断,(注意!不是 SPI 总线那个中断),这类中断泛指所有的

(3)功能

     中断触发、优先级仲裁、CPU响应、中断完成

5、协处理器:cp0 - cp15

        内核中的用到的ARM Cortex-A7内核GIC(通用中断控制器)的关键寄存器

  1. C_IAR

    • 全称:Interrupt Acknowledge Register(中断应答寄存器)
    • 功能:读取时返回当前最高优先级的中断ID,表示处理器已接受该中断
    • 访问权限:只读(__IM
    • 偏移地址:0x200C
  2. C_EOIR

    • 全称:End Of Interrupt Register(中断结束寄存器)
    • 功能:写入中断ID以通知GIC中断处理完成
    • 访问权限:只写(__OM
    • 偏移地址:0x2010
  3. 无法直接知道基地址引入协处理器
  4. GIC的地址保存在协处理器的cp15中

(1)协处理器概念

(2)核心指令

  • cond:省略表示无条件执行。
  • p15:指定协处理器 CP15(系统控制协处理器)。
  • opc1:操作码1,此处为 0(CP15 规定 opc1 必须为 0,否则结果不可预测)。
  • Rt:目标寄存器,示例中为 r0(ARM 核心寄存器)。
  • CRn:协处理器主寄存器编号,示例中为 c0
  • CRm:附加寄存器或操作数,示例中为 c0(若无需附加信息,通常设为 c0)。
  • opc2:次要操作码,示例中为 0(用于区分同一编号寄存器的不同功能)

示例:

eg:MRC p15, 0, r0, c0, c0, 0

// 指令从 CP15 的 c0 寄存器(主标识符寄存器)读取数据到 ARM 的 r0 寄存器。c0 是只读寄存器         

(3)异常向量表基地址的配置实现过程

6、详细蓝图

7、代码实现

interrupt.c interrupt.h

start.S

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

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

相关文章

Ansible的 Playbook 模式详解

目录一、Playbook模式1.1 Playbook 的优势1.2 Playbook 的组成1.3 安装 httpd 服务案例1.4 Playbook 命令及常用参数1.5 Playbook 的语法 —— 权限相关1. remote_user2. become3. become_method1.6 Playbook 的通知与触发机制1. notify2. handlers3. 使用示例4. 使用场景1.6 P…

猿辅导Java后台开发面试题及参考答案

int 与 Integer 的区别是什么&#xff1f;若创建数量庞大的数字时使用 Integer&#xff0c;会对重复数字创建新对象吗&#xff1f;int 是 Java 中的基本数据类型&#xff0c;直接存储数值&#xff0c;占用 4 个字节&#xff0c;默认值为 0&#xff0c;不需要通过 new 关键字创建…

代码随想录学习摘抄day9(回溯1-11)

一个朴实无华的目录定义&#xff1a;回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。应用场景&#xff1a;回溯法解决的问题都可以抽象为树形结构代码模板题型第77题. 组合思路&#xff1a;每次从集合中选取元素&#xff0c;可选择的范围随着选择的进行而收缩&…

Altium Designer(AD24)打开工程文件的几种方法

🏡《专栏目录》 目录 1,概述 2,源文件 2,菜单栏 4,工具栏 5,注意事项 1,概述 本文介绍几种打开工程文件的方法。 2,源文件 找到工程的源文件存储路径,找到.PrjPcb的源工程文件,双击打开。 2,菜单栏 第1步:执行File→Open, 第2步:找到工程文件的存储路径,并选中…

Linux嵌入式自学笔记(基于野火EBF6ULL):2.点灯与ubuntu安装

一、点灯登录root&#xff1a;账号&#xff1a;root ; 密码&#xff1a;root点灯命令&#xff1a;echo 0 > /sys/class/leds/red/brightness #关闭red灯 echo 0 > /sys/class/leds/blue/brightness #关闭blue灯 echo 0 > /sys/class/leds/green/brightness …

【Java实战㊷】Java实战:MyBatis-Plus 开启MySQL数据库高效操作之旅

目录 一、MyBatis-Plus 环境集成 1.1 项目依赖引入 1.2 数据库配置 1.3 代码生成器使用 二、核心 CRUD 操作实现 2.1 基础查询 2.2 数据新增与修改 2.3 复杂查询场景 三、性能优化与高级特性 3.1 缓存配置 3.2 乐观锁实现 3.3 字段自动填充 四、实战案例:用户管理模块开发 4.1…

开学季干货——知识梳理与经验分享

技术文章大纲&#xff1a;开学季干货——知识梳理与经验分享目标受众分析明确文章面向的学生群体&#xff08;如大学生、高中生&#xff09; 分析不同群体的核心需求&#xff08;课程准备、时间管理、工具使用&#xff09; 结合技术场景&#xff08;如数字笔记、在线协作&#…

Linux《线程(上)》

通过之前的学习我们已经了解了操作系统当中的基本的概念包括进程、基础IO、磁盘文件存储等&#xff0c;但是到目前为止我们还未了解到线程相关的概念&#xff0c;这就使得当前我们对操作系统的认知还不是完整的&#xff0c;现在我们是还是无法理解一个进程当中是如何同时的执行…

为什么知识复用时缺乏场景化指导影响实用性

知识复用时因缺乏场景化指导而严重影响实用性&#xff0c;其根本原因在于知识的价值本质上根植于其应用情境。脱离了场景的“纯知识”往往是抽象、片面且难以行动的。这导致了认知鸿沟的产生、隐性知识的流失、决策风险的增加、以及学习迁移效率的低下。当使用者面对一份缺乏“…

拥抱直觉与创造力:走进VibeCoding的新世界

引言 在传统观念里&#xff0c;编程是一项高度理性、逻辑严密的活动&#xff0c;开发者需要像建筑师一样&#xff0c;用代码一行行地精确构建数字世界。然而&#xff0c;随着人工智能技术的飞速发展&#xff0c;一种全新的编程理念和体验正在兴起——它就是 VibeCoding&#xf…

HTTP的Web服务测试在Python中的实现

在Web开发领域&#xff0c;对HTTP Web服务进行测试是确保服务稳定性和可靠性的关键步骤。Python作为一种功能强大的编程语言&#xff0c;提供了多种工具和库来简化这一过程。本文将介绍如何在Python中实现HTTP的Web服务测试。首先&#xff0c;Python的requests库是测试HTTP Web…

Android Studio 构建项目时 Gradle 下载失败的解决方案

一、问题原因分析根据错误日志&#xff1a;下载地址 https://services.gradle.org/distributions/gradle-8.1-bin.zip 连接超时&#xff08;10秒&#xff09;。可能原因&#xff1a;网络环境限制&#xff08;如公司防火墙、地区网络屏蔽&#xff09;。代理配置未生效或配置错误…

mysql 与 MongoDB 的分片

MySQL 和 MongoDB 作为不同类型数据库的代表(关系型 vs 文档型),其分片机制在设计理念、实现方式和适用场景上存在显著差异。两者的分片核心目标一致——通过水平扩展(Scale Out)解决单节点存储容量和性能瓶颈,但因数据模型、事务支持和分布式设计理念的不同,形成了截然…

Coze源码分析-资源库-创建知识库-前端源码-核心逻辑与接口

创建知识库逻辑 1. 表单验证系统 文件位置&#xff1a;frontend/packages/data/knowledge/knowledge-modal-base/src/create-knowledge-modal-v2/features/add-type-content/coze-knowledge/index.tsx 知识库创建表单的验证规则&#xff1a; // 知识库名称验证规则 const nameV…

欧拉函数 | 定义 / 性质 / 应用

注&#xff1a;本文为 “欧拉函数” 相关合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 欧拉函数最全总结 jiet07 已于 2024-10-22 10:00:54 修改 一、欧拉函数的引入 首先引入互质关系&#xff1a; 如果两个正整数&#xff0c;除了 111 以…

ubuntu git push每次都要输入密码怎么解决只输入一次密码

在 Ubuntu 下使用 Git 时&#xff0c;如果每次 push 都需要重复输入密码&#xff0c;可以通过配置 Git 凭证存储来解决。以下是几种常用方法&#xff1a; &#x1f511; 方法一&#xff1a;使用 Git 凭证缓存&#xff08;推荐&#xff09; 设置凭证缓存&#xff08;默认 15 分钟…

【机械故障】使用fir滤波器实现数据拟合

使用fir滤波器实现数据拟合 提示&#xff1a;学习笔记 使用fir滤波器实现数据拟合使用fir滤波器实现数据拟合一、问题建模二、 构建矩阵方程&#xff08;关键步骤&#xff09;三、最小二乘解四、重要注意事项4.1 滤波器长度 M4.2 数据的预处理4.3 延迟问题4.4 性能评估一、问题…

STC8H系列-高级PWM-两相步进电机-细分驱动

两相步进电机, STC8H系列 用高级PWM实现SPWM细分驱动 /************* 功能说明 ************** 用B组高级PWM细分驱动2相4线小型步进电机, 支持1、2、4、8、16、32、64细分, 比如1.8度的电机4细分到0.45度. 本程序用于演示SPWM多细分直接驱动2相4线小型步进电机…

内网环境下ubuntu 20.04搭建深度学习环境总结

2025年9月更新&#xff0c;随着人工智能的发展&#xff0c;现在深度学习环境配置越来越简单了&#xff0c;常用的pytorch、paddle&#xff08;3.x&#xff09;等深度学习库安装的时候自带了cuda和cudnn的python包&#xff0c;不需要在操作系统层面自己安装&#xff0c;配置环境…

深入 Linux 文件系统:从数据存储到万物皆文件

深入 Linux 文件系统&#xff1a;从数据存储到万物皆文件 Linux 文件系统是一个精妙而复杂的工程&#xff0c;它像一座图书馆&#xff0c;不仅存放着书籍&#xff08;数据&#xff09;&#xff0c;还有一套高效的卡片索引系统&#xff08;元数据&#xff09;来管理它们。本文将…