当前位置: 首页 > news >正文

Linux 学习记录57(ARM篇)

Linux 学习记录57(ARM篇)

在这里插入图片描述

本文目录

  • Linux 学习记录57(ARM篇)
  • 一、外部中断
    • 1. 概念
    • 2. 流程图框
  • 二、相关寄存器
    • 1. GIC CPU Interface (GICC)
    • 2. GIC distributor (GICD)
    • 3. EXTI registers
  • 三、EXTI 寄存器
    • 1. 概述
    • 2. 内部框图
    • 3. 寄存器功能描述
    • 4. EXTI选择框图
    • 5. EXTI_EXTICR1 (1-4)
    • 6. EXTI_RTSR1
    • 6. EXTI_FTSR1
    • 7. EXTI_IMR1
    • 8. EXTI_FPR1

一、外部中断

1. 概念

2. 流程图框

通过IO口的电平,产生对应的外部中断,通过外部中断的处理函数完成相应功能

外部中断是计算机系统中的一种中断类型,它由外部设备或外部事件触发,以通知计算机系统执行相应处理程序。
当外部设备需要与计算机进行交互或者发生了某些需要处理的事件时,会发送一个中断信号给CPU,CPU则会中断当
前正在执行的程序,转而执行与该中断相关的处理程序。外部中断可以分为多种类型,比如硬件中断和软件中断。硬件中断是由硬件设备产生的,比如键盘输入、鼠标点击
、定时器到达等。软件中断则是由软件程序主动触发的,比如系统调用、软件异常等。外部中断的处理过程包括中断请求、中断响应和中断处理三个阶段。当外部设备发送中断请求信号时,CPU会检测
到该信号,并保存当前程序的执行现场信息,然后跳转到相应的中断处理程序执行。执行完中断处理程序后,CPU
会恢复之前保存的程序执行现场信息,继续执行被中断的程序。外部中断的引入可以提高计算机系统的处理效率和响应能力,使系统能够及时处理各种外部事件。

在这里插入图片描述

二、相关寄存器

在这里插入图片描述

1. GIC CPU Interface (GICC)

GIC CPU Interface (GICC)是一种用于处理器与中断控制器之通信的接口。GIC代表通用中断控制器,它是一种硬件
组件,用于管理和处理中断信号。GICC提供了一组寄存器和控制逻辑,用于处理器与GIC之间的交互。它允许处理器与GIC进行中断的注册、屏蔽、
触发和处理等操作。GICC的主要功能包括:1. 中断屏蔽和使能:处理器可以通过设置相关寄存器来屏蔽或使能特定的中断信号。
2. 中断触发:处理器可以通过写入相应的寄存器来触发中断信号,将其发送给GIC。
3. 中断注册:处理器可以将自己作为中断处理程序注册到GIC,以便在中断发生时接收到相应的中断通知。
4. 中断处理:当中断发生时,GIC会将中断信号发送给相应的处理器,并将执行权转移到相应的中断处理程序。GICC是在多核处理器系统中广泛使用的一种接口,它可以实现多个处理器同时与中断控制器进行通信和协调,提高
系统的并发处理能力和中断管理效率。

在这里插入图片描述

2. GIC distributor (GICD)

GIC distributor (GICD)是通用中断控制器(GIC)中的一个组件,它负责接收来自外部设备的中断信号,并将这些中断信号分发给对应的处理器核心进行处理。GICD在多核处理器系统中起到了协调和管理中断的重要作用。

GICD具有以下主要功能:

  1. 中断路由:GICD根据中断信号的特征将其路由到相应的处理器核心。每个处理器核心都可以通过GICD配置来决定是否接受某个特定中断信号。
  2. 中断优先级:GICD可以配置每个中断信号的优先级,确保高优先级的中断得到及时处理。
  3. 中断屏蔽和使能:GICD提供了寄存器用于屏蔽或使能特定的中断信号,以便控制中断的触发和处理。
  4. 中断分组:GICD支持将中断信号分组,以便更好地管理和处理不同类型的中断信号。
  5. 中断转发:GICD可以将一个中断信号转发给其他处理器核心,以实现多核之间的中断通知和共享。

GICD与GICC(GIC CPU Interface)一起构成了GIC的核心组件,它们共同实现了中断的管理和处理。通过GICD,多个处理器核心可以协同工作,高效地处理来自外部设备的中断信号,提高系统的并发处理能力和中断管理效率。

在这里插入图片描述

3. EXTI registers

EXTI (External Interrupt)寄存器是用于处理外部中断的寄存器组。它们是STM32系列微控制器中的一部分,用于处理与外部设备相关的中断信号。

在STM32微控制器中,外部中断通过EXTI寄存器来配置和管理。EXTI寄存器包括以下几个主要寄存器:

  1. EXTI_IMR (Interrupt Mask Register):用于屏蔽或使能特定的外部中断线。每个位对应一条外部中断线,设置为1表示使能,设置为0表示屏蔽。
  2. EXTI_RTSR (Rising Trigger Selection Register):用于选择上升沿触发的外部中断线。每个位对应一条外部中断线,设置为1表示选择上升沿触发,设置为0表示不选择。
  3. EXTI_FTSR (Falling Trigger Selection Register):用于选择下降沿触发的外部中断线。每个位对应一条外部中断线,设置为1表示选择下降沿触发,设置为0表示不选择。
  4. EXTI_PR (Pending Register):用于标记外部中断线是否处于待处理状态。每个位对应一条外部中断线,设置为1表示该中断线产生了中断,需要处理后清除。

通过配置这些EXTI寄存器,可以灵活地控制和管理外部中断的触发和处理。比如,可以选择上升沿或下降沿触发中断,屏蔽或使能特定的中断线,以及检查中断线的待处理状态。这样,系统可以根据具体需求对外部中断进行灵活的配置和处理。

在这里插入图片描述

三、EXTI 寄存器

1. 概述

在这里插入图片描述

2. 内部框图

在这里插入图片描述

3. 寄存器功能描述

在这里插入图片描述

4. EXTI选择框图

PIN1对应EXTI0,PIN2对应EXTI2,以此类推
在这里插入图片描述

5. EXTI_EXTICR1 (1-4)

EXTI_EXTICR1 是一个寄存器,用于配置外部中断线与GPIO引脚之间的映射关系。在STM32微控制器中,有多个外部中断线可以与不同的GPIO引脚相连,EXTI_EXTICR1 寄存器用于设置其中的一组映射关系。
将Pin0-15引脚分为4组,分别使用EXTI_EXTICR1 到EXTI_EXTICR4配置
在这里插入图片描述

例如要将PA7的于GPIO中断相连这就需要将该组寄存器的EXTI7设置位0x00,如果是PC7则为0x02

在这里插入图片描述

6. EXTI_RTSR1

外部中断的上升沿配置寄存器
在这里插入图片描述

6. EXTI_FTSR1

外部中断的下升沿配置寄存器
在这里插入图片描述

7. EXTI_IMR1

EXTI_IMR1(Interrupt Mask Register 1)是STM32微控制器中的一个寄存器,用于屏蔽或使能外部中断线。
它是EXTI(External Interrupt)寄存器组中的一个寄存器。EXTI_IMR1寄存器是一个32位的寄存器,每个位对应一条外部中断线。通过设置相应的位,可以选择使能或屏蔽特
定的外部中断线。当某个外部中断线的对应位被设置为1时,表示该中断线被使能,可以触发中断。当对应位被设
置为0时,表示该中断线被屏蔽,不会触发中断。通过对EXTI_IMR1寄存器进行配置,可以灵活地选择哪些外部中断线会触发中断处理程序,以适应特定的应用需求

设置为将相应的中断的位配置为1即不屏蔽中断
在这里插入图片描述

8. EXTI_FPR1

EXTI_FPR1:EXTI falling edge pending register寄存器名字:EXTI下降沿挂起寄存器作用:清除EXTI层中断挂起标志位rc_w1:可读可写读0:表示中断没有触发读1:表示中断触发写0:不清除EXTI层中断挂起标志位写1:清除EXTI层中断挂起标志位

在这里插入图片描述

相关文章:

Linux 学习记录57(ARM篇)

Linux 学习记录57(ARM篇) 本文目录 Linux 学习记录57(ARM篇)一、外部中断1. 概念2. 流程图框 二、相关寄存器1. GIC CPU Interface (GICC)2. GIC distributor (GICD)3. EXTI registers 三、EXTI 寄存器1. 概述2. 内部框图3. 寄存器功能描述4. EXTI选择框图5. EXTI_EXTICR1 &…...

Doris注意事项,Doris部署在阿里云,写不进去数据

1.Doris官网 Doris官网https://doris.apache.org/ 2.根本原因 本地idea访问FE,FE会返回BE的地址,但是在服务器上通过ip addr查看,发现只有局域网IP,所以FE返回了局域网的IP,导致idea连接不上BE 3.解决办法 重写Ba…...

502 Bad GateWay报错的解决方法

什么是502 bad gateway 报错 简单来说 502 是报错类型代码 bad gateway 错误的网关。是Web服务器作为网关或代理服务器时收到无效的响应。 用我们的口语说就是运行网站的服务器暂时挂了(不响应)。 产生错误的原因 1.连接超时 我们向服务器发送请求 由于服务器当前链接太多&am…...

openpnp - ReferenceStripFeeder 改版零件

文章目录 openpnp - ReferenceStripFeeder 改版零件概述笔记整体效果散料飞达主体磁铁仓盖板飞达编带中间压条飞达编带两边压条装配体用的8mm编带模型END openpnp - ReferenceStripFeeder 改版零件 概述 官方推荐了ReferenceStripFeeder的模型smd_strip_feeders_mod_tray.zip…...

VoxPoser:使用大语言模型(GPT-4)来对机器人操作的可组合三维值图【论文解读】

这是最近斯坦福的李飞飞团队的一篇论文:VoxPoser: Composable 3D Value Maps for Robotic Manipulation with Language Models 主要是通过大语言模型LLM和视觉语言模型VLM结合,来对机器人做各种日常操作,我们可以先来看下实际效果:大语言模型…...

RISC-V公测平台发布 · 第一个WEB Server “Hello RISC-V world!”

RISC-V公测平台Web Server地址:http://175.8.161.253:8081 一、前言 Web Server是互联网应用的基础设施,无论是用户访问网站,还是后端服务提供商和开发者构建各种应用程序,Web Server都在其中扮演着至关重要的角色。 显而易见…...

Linux 发行版 CentOS 于 Ubuntu 软件的安装、卸载、查找

CentOS于Ubuntu 内核都是Linux,是一样的。 CentOS 软件格式 .rpm sudo yum [-y] [ install | remove | search ] 软件名称 install 安装 remove 移除 search 搜索 Ubuntu 软件格式 .deb sudo apt [-y] [ install | remove | search ] 软件名称 install 安装 remove…...

cmd相关操作命令

1.根据端口号查询对应进程的PID netstat -ano | findstr 端口号 例如:netstat -ano | findstr 9080;该端口所属进程的PID为6684 2.根据PID查询对应进程 tasklist | findstr PID 例如:tasklist | findstr 6684;该PID所属进程名为…...

使用EM算法完成聚类任务

EM算法(Expectation-Maximization Algorithm)是一种基于迭代优化的聚类算法,用于在无监督的情况下将数据集分成几个不同的组或簇。EM算法是一种迭代算法,包含两个主要步骤:期望步骤(E-step)和最…...

❤️创意网页:创意视觉效果粒子循环的网页动画

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…...

【MTI 6.S081 Lab】thread

【MTI 6.S081 Lab】thread 前言调度Uthread: switching between threads (moderate)实验任务Hints解决方案thread_switchthread_create()thread_schedule() Using threads (moderate)实验任务解决方案 Barrier (moderate)实验任务解决方案 本实验前去看《操作系统导论》第29章基…...

AWS / VPC 云流量监控

由于安全性、数据现代化、增长、灵活性和成本等原因促使更多企业迁移到云,将数据存储在本地的组织正在使用云来存储其重要数据。亚马逊网络服务(AWS)仍然是最受追捧和需求的服务之一,而亚马逊虚拟私有云(VPC&#xff0…...

【C++学习笔记】extern “c“以及如何查看符号表

如何查看符号表 要查看.a文件的内容&#xff0c;可以使用ar命令。下面是一些常见的用法&#xff1a; 列出.a文件中包含的所有文件&#xff1a; ar t <filename.a>提取.a文件中的单个文件&#xff1a; ar x <filename.a> <filename.o>将.a文件中的所有文件提…...

24考研数据结构-数组和特殊矩阵

目录 数据结构&#xff1a;数组与特殊矩阵数组数组的特点数组的用途 特殊矩阵对角矩阵上三角矩阵和下三角矩阵稀疏矩阵特殊矩阵的用途 结论 3.4 数组和特殊矩阵3.4.1数组的存储结构3.4.2普通矩阵的存储3.4.3特殊矩阵的存储1. 对称矩阵(方阵)2. 三角矩阵(方阵)3. 三对角矩阵(方阵…...

服务器后台运行程序

代码运行 要让代码在服务器后台运行&#xff0c;有多种方法。在 Linux 系统中&#xff0c;最常见的有以下几种方式&#xff1a; **1. 使用 & 符号&#xff1a;** 在命令后面添加 & 符号可以让程序在后台运行。例如&#xff1a; bash python myscript.py &但是…...

大数据课程D7——hadoop的YARN

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 了解YARN的概念和结构&#xff1b; ⚪ 掌握YARN的资源调度流程&#xff1b; ⚪ 了解Hadoop支持的资源调度器&#xff1a;FIFO、Capacity、Fair&#xff1b; ⚪ 掌握YA…...

Rust vs Go:常用语法对比(十三)

题图来自 Go vs. Rust: The Ultimate Performance Battle 241. Yield priority to other threads Explicitly decrease the priority of the current process, so that other execution threads have a better chance to execute now. Then resume normal execution and call f…...

【【51单片机DA转换模块】】

爆改直流电机&#xff0c;DA转换器 main.c #include <REGX52.H> #include "Delay.h" #include "Timer0.h"sbit DAP2^1;unsigned char Counter,Compare; //计数值和比较值&#xff0c;用于输出PWM unsigned char i;void main() {Timer0_Init();whil…...

[SQL挖掘机] - 字符串函数 - substring

介绍: substring函数是在mysql中用于提取字符串的一种函数。它接受一个字符串作为输入&#xff0c;并返回从该字符串中指定位置开始的一部分子串。substring函数可以用于获取字符串中的特定字符或子串&#xff0c;以便进行进一步的处理或分析。 用法: 下面是substring函数的…...

第一百一十六天学习记录:C++提高:STL-string(黑马教学视频)

string基本概念 string是C风格的字符串&#xff0c;而string本质上是一个类 string和char区别 1、char是一个指针 2、string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char型的容器。 特点&#xff1a; string类内部封装了很多成员方…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...