ARM-外部中断,ADC模数转换器

根据您提供的图片,我们可以看到一个S3C2440微控制器的中断处理流程图。这个流程图展示了从中断请求源到CPU的整个中断处理过程。以下是流程图中各个部分与您提供的寄存器之间的关系:
-
请求源(带sub寄存器):
-
这些是具体的中断源,例如UART0-ERR、UART0-RXD、UART0-TXD等。
-
每个请求源可能有一个对应的子中断源挂起标志(SUBSRCPND),用于指示该请求源下的具体中断事件。
-
-
子中断源开关(SUBMASK):
-
这个开关用于使能或禁用子中断源的中断请求。
-
例如,如果
SUBMASK寄存器的某位被清除(即设置为0),则对应的子中断源的中断请求将被屏蔽。
-
-
源挂起标志(SRCPND):
-
这个寄存器用于记录哪些中断源的中断请求已经发生但尚未被处理。
-
在流程图中,
SRCPND寄存器的值会被传递到开关(MASK)和优先级(MODE)模块。
-
-
开关(MASK):
-
这个模块用于使能或禁用中断请求的传递。
-
它使用
INTMSK寄存器的值来决定是否允许中断请求通过。 -
在代码中,
INTMSK &= ~(1 << 5);操作使能了EINT8_23中断组。
-
-
优先级(MODE):
-
这个模块用于设置中断的优先级。
-
它可能涉及到优先级寄存器(例如
INTPR),但在您提供的代码中没有直接使用。
-
-
中断挂起标志(INTPND):
-
这个寄存器用于记录哪些中断已经发生但尚未被处理。
-
在流程图中,
INTPND寄存器的值会被传递到CPU。 -
在代码中,
INTPND = INTPND;操作用于清零中断挂起寄存器。
-
-
CPSR(I, F):
-
这是当前程序状态寄存器(CPSR)中的两个位,用于控制中断使能和禁止。
-
CPSR寄存器的I位用于使能或禁止IRQ中断,F位用于使能或禁止FIQ中断。 -
在代码中,通过修改CPSR寄存器来使能IRQ中断。
-
-
CPU(ARM920T):
-
最终,处理完的中断请求会被传递到CPU进行处理。
-
CPU会根据中断的优先级和当前的中断使能状态来决定是否响应中断。
-
总结来说,流程图中展示了从中断请求源到CPU的整个中断处理过程,而您提供的寄存器在这个过程中起到了关键的作用。每个寄存器都有其特定的功能,共同协作以确保中断能够被正确地处理。





![]()


发生中断处理


-
mrs r0, cpsr-
这条指令将当前程序状态寄存器(CPSR)的值移动到通用寄存器
r0中。 -
CPSR包含了处理器的状态信息,如条件标志、中断使能位等。
-
-
bic r0, r0, #0x1f-
这条指令对
r0寄存器进行位清除(Bit Clear)操作,用于清除CPSR中的模式位(最低的5位,即0x1F)。 -
这样做是为了将当前的处理器模式位清零,为下一步设置新的模式做准备。
-
-
orr r0, r0, #0x12-
这条指令对
r0寄存器进行位或(Bit OR)操作,将模式位设置为0x12。 -
在ARM架构中,0x12代表IRQ模式。
-
-
msr cpsr_c, r0-
这条指令将
r0寄存器的值移回CPSR。 -
由于使用了
cpsr_c而不是cpsr,这条指令仅修改CPSR中的条件码标志位和模式位,而不会影响其他位(如中断使能位)。 -
这一步完成了处理器模式从当前模式切换到IRQ模式的操作。
-
-
ldr sp, =0x40000C00-
这条指令将立即数
0x40000C00加载到栈指针(SP)寄存器中。 -
这样做是为了初始化IRQ模式的栈指针,为即将到来的中断处理程序准备栈空间。
-
0x40000C00是为IRQ模式预设的栈地址。
-

INTOFFSET为中断的偏移量,反映的是那种中断



![]()




在S3C2440微控制器中,涉及到中断处理的寄存器有多个,每个寄存器都有其特定的作用。以下是您提供的代码中涉及到的寄存器及其作用的详细说明:
1. GPGCON
-
作用:配置GPIO端口G的引脚功能。
-
操作:
-
GPGCON &= ~(0x3 << 0);:清除GPG0引脚的功能设置,确保其不被其他功能占用。 -
GPGCON |= (0x2 << 0);:将GPG0引脚设置为外部中断(EINT8)模式。
-
2. EXTINT1
-
作用:外部中断控制寄存器,用于设置外部中断的触发方式。
-
操作:
-
EXTINT1 &= ~(0x7 << 0);:清除EINT8的触发方式设置,确保其不被其他设置影响。 -
EXTINT1 |= (0x2 << 0);:将EINT8设置为下降沿触发。
-
3. EINTMASK
-
作用:外部中断屏蔽寄存器,用于使能或禁用特定的外部中断。
-
操作:
-
EINTMASK &= ~(1 << 8);:使能EINT8中断,即清除屏蔽位,允许EINT8中断请求被发送到中断控制器。
-
4. INTMSK
-
作用:中断屏蔽寄存器,用于使能或禁用一组中断。
-
操作:
-
INTMSK &= ~(1 << 5);:使能EINT8_23中断组,即清除屏蔽位,允许EINT8_23组中的中断请求被发送到中断控制器。
-
5. EINTPEND
-
作用:外部中断挂起寄存器,用于记录哪些外部中断已经发生但尚未被处理。
-
操作:
-
EINTPEND |= (1 << 8);:清零EINT8的挂起位,表示EINT8中断已经被处理。
-
6. SRCPND
-
作用:源挂起寄存器,用于记录哪些中断源的中断请求已经发生但尚未被处理。
-
操作:
-
SRCPND |= (1 << irq_num);:清除特定中断源的挂起位,表示该中断已经被处理。
-
7. INTPND
-
作用:中断挂起寄存器,用于记录哪些中断已经发生但尚未被处理。
-
操作:
-
INTPND = INTPND;:通过将寄存器的值写回自身,清零所有挂起的中断位,表示所有挂起的中断已经被处理。
-
8. INTOFFSET
-
作用:中断偏移量寄存器,用于提供当前发生的中断的编号。
-
操作:
-
unsigned int irq_num = INTOFFSET;:读取当前中断的编号,用于确定是哪种中断发生了。
-
这些寄存器共同工作,实现了S3C2440微控制器的中断处理机制,确保了系统能够正确响应和处理各种中断请求。





将value读取出来计算电压为3.3/1024*value

相关文章:
ARM-外部中断,ADC模数转换器
根据您提供的图片,我们可以看到一个S3C2440微控制器的中断处理流程图。这个流程图展示了从中断请求源到CPU的整个中断处理过程。以下是流程图中各个部分与您提供的寄存器之间的关系: 请求源(带sub寄存器): 这些是具体的…...
git克隆数据失败
场景:当新到一家公司,然后接手了上一个同时的电脑,使用git克隆代码一直提示无法访问,如图 原因:即使配置的新的用户信息。但是window记录了上一个同事的登录信息,上一个同事已经被剔除权限,再拉…...
自动化备份全网服务器数据平台
自动化备份全网服务器数据平台 项目背景知识 总体需求 某企业里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了数据就会丢失,现在领导要求把数据做备份,这样Web服务器数据丢失在可以进行恢复。要求如下:1.每天0…...
大模型如何优化数字人的实时交互与情感表达
标题:大模型如何优化数字人的实时交互与情感表达 内容:1.摘要 随着人工智能技术的飞速发展,数字人在多个领域的应用愈发广泛,其实时交互与情感表达能力成为提升用户体验的关键因素。本文旨在探讨大模型如何优化数字人的实时交互与情感表达。通过分析大模…...
AI Agent系列(八) -基于ReAct架构的前端开发助手(DeepSeek)
AI Agent系列【八】 项目目标一、核心功能设计二、技术栈选择三、Python实现3.1 设置基础环境3.2 定义AI前端生成的类3.4 实例化3.5 Flask路由3.6 主程序执行 四、 功能测试 项目目标 开发一个能够协助HTMLJSCSS前端设计的AI Agent,通过在网页中输入相应的问题&am…...
二级索引详解
二级索引详解 二级索引(Secondary Index)是数据库系统中除主键索引外的附加索引结构,用于加速基于非主键列的查询操作。以下是关于二级索引的全面解析: 一、核心概念 特性主键索引 (Primary Index)二级索引 (Secondary Index)唯一性必须唯一可以唯一或非唯一数量每表只有…...
一文学会云服务器配置Milvus向量数据库
服务器准备 首先,我们需要进行服务器的准备,这里准备的是RTX-4090服务器 连接我们已经创建好的服务器,这里可使用MobaXterm进行ssh连接 ssh funhpcIP地址 一键完成Docker配置 注:docker的旧版本不一定被称为docker,doc…...
19685 握手问题
19685 握手问题 ⭐️难度:简单 🌟考点:2024、省赛、数学 📖 📚 package test ;import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);…...
【MySQL数据库】锁机制
概述 锁:是计算机协调多个进程或者线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(CPU、RAM、IO)的争用以外。数据也是一种供多用户共享的资源。如何保证数据的并发访问的一致性、有效性是所有数据库必须解决的一个…...
ASP.NET Core Web API 中 HTTP状态码的分类及对应的返回方法
文章目录 前言一、HTTP状态码分类及常用方法二、具体返回方法示例1) 2xx 成功类2)4xx 客户端错误3)5xx 服务器错误4)其他特殊状态码 三、高级返回方式1)使用 IActionResult 与 ActionResult<T>2)统一…...
react redux的学习,单个reducer
redux系列文章目录 一 什么redux? redux是一个专门用于做状态管理的JS库(不是react插件库)。它可以用在react, angular, vue等项目中, 但基本与react配合使用。集中式管理react应用中多个组件共享的状 简单来说,就是存储页面的状态值的一个库…...
C++20新增内容
C20 是 C 语言的一次重大更新,它引入了许多新特性,使代码更现代化、简洁且高效。以下是 C20 的主要新增内容: 1. 概念(Concepts) 概念用于约束模板参数,使模板编程更加直观和安全。 #include <concept…...
分布式控制技术赋能智慧工厂精准控制研究
摘要:本文聚焦于分布式控制技术在智慧工厂精准控制中的应用。详细阐述了分布式控制系统(DCS)、边缘计算机、边边协同技术以及分布式计算等关键要素在实现精准控制中的作用机制。同时,分析了云边协同模式存在占用带宽、单点故障、数…...
清明节里清明菜:软萩(拟人版介绍)
好像人们无论过任何节,总是离不开吃 清明节里吃清明菜,你采摘了吗? 姓名 软萩,也叫鼠麴草、清明菜、软雀,学名鼠曲草。 一些地方性小名(防止大家找不到组织,已知的都附上)…...
JavaWeb学习--MyBatis-Plus整合SpringBoot的ServiceImpl方法(增加,修改与删除部分)
接下来是常用的增加,修改以及删除部分 首先是增加部分,增加一个新的数据 Testpublic void testInsert() {// 添加一个新用户记录Student s new Student();s.setName("NewStudent");s.setAge(25);boolean saved studentService.save(s);//可以…...
AiCube 试用 - 创建流水灯工程
AiCube 试用 - 创建流水灯工程 本文介绍了 Aiapp-ISP 仿真调试平台软件的 AiCube 工具,实现流水灯工程的快速创建的主要流程。 下载运行 下载 最新版 AIapp-ISP 软件; 解压并打开该软件,右侧操作界面选择并进入 Keil 仿真设置 标签项&…...
【Kafka基础】Kafka工作原理解析
Apache Kafka作为当今最流行的分布式消息系统,以其高吞吐、低延迟和高可靠性的特点,成为大数据领域不可或缺的基础设施。本文将深入剖析Kafka的核心架构和工作原理,帮助开发者全面理解这一强大的消息引擎。 1 Kafka架构解析 Kafka采用分布式、…...
GISBox:核心功能免费的一站式三维GIS处理平台
大家好,今天为大家介绍的软件是GISBox:一款核心功能免费的一站式三维GIS处理平台,主要是适用于数字孪生。下面,我们将从软件的主要功能、支持的系统、软件官网等方面对其进行简单的介绍。 软件官网:http://www.gisbox.…...
【论文笔记】DeepSeek-R1 技术报告
最强开源LLM,性能和效果都很棒;在数学、代码这种有标准正确答案的场景,表现尤为突出;一些其他场景的效果,可能不如DeepSeek-V3和Qwen。 Deepseek-R1没有使用传统的有监督微调sft方法来优化模型,而使用了大规…...
基于javaweb的SSM羽毛球会员俱乐部系统场馆课程运动设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
[dp4_路径问题] 下降路径最小和 | 最小路径和 | 地下城游戏
目录 1.下降路径最小和 题解 2.最小路径和 题解 3.地下城游戏 题解 做算法题的时候,谨记图画得越详细越好,思路想的越清晰越好,然后再用代码实现一下就好啦 1.下降路径最小和 链接:931. 下降路径最小和 给你一个 n x n 的…...
EasyExcel 数据字典转换器实战:注解驱动设计
一、场景痛点与解决方案 1. 问题背景 在 Excel 导入导出场景中,开发者常面临以下问题: 数据可读性差:数据库存储的字典值(如 1、true)直接导出时难以理解双向转换复杂:导入时需将用户输入的标签反向解析…...
【蓝桥杯】算法笔记2
这篇文章主要记录动态规划方面的学习。 动态规划的核心思想: 把大问题分解成小问题,记住小问题的解,避免重复计算。 动态规划(DP)的三大特点: ①最优子结构:大问题的最优解可以由小问题的最优解推导出来 ②重叠子问题:在求解过程中会反复遇到相同的小问题 ③无后效…...
解决STM32CubeMX中文注释乱码
本人采用【修改系统环境变量】的方法 1. 使用快捷键 win X,打开【系统R】,点击【高级系统设置】 2. 点击【环境变量】 3. 点击【新建】 4.按图中输入【JAVA_TOOL_OPTIONS】和【-Dfile.encodingUTF-8】,新建环境变量后重启CubeMX即可。 解释…...
AI产品的上层建筑:提示词工程、RAG与Agent
上节课我们拆解了 AI 产品的基础设施建设,这节课我们聊聊上层建筑。这部分是产品经理日常工作的重头戏,包含提示词、RAG 和 Agent 构建。 用 AI 客服产品举例,这三者的作用是这样的: 提示词能让客服很有礼貌。比如它会说&#x…...
基于自定义注解+反射+AOP+Redis的通用开关设计:在投行交易与风控系统的落地实践
一句话总结🤣 一个注解让业务逻辑自动切换,Redis当起了隐形操盘手 业务痛点和需求场景 交易系统需支持毫秒级动态切换报价策略,如切换到备用流动性通道风控模型需支持灰度发布(10%流量测试新权重算法)和紧急熔断&am…...
RK3588使用笔记:ubuntu/麒麟系统功能测试程序
一、前言 本编文章记录在使用嵌入式系统中的一些功能测试demo程序,大部分都是AI写的,哈哈哈,确实很有帮助,但是得根据自身设备实际情况和知道如何问AI,才能得出你想要的结果,本文就记录一些ubuntu/麒麟系统…...
Unity中优化绘制调用整理
DrawCall 指的是 CPU 向 GPU 发送渲染指令的过程,在 Unity 中,每次渲染一个网格时,CPU 都需要向 GPU 发送一系列的渲染指令,这个过程被称为一次绘制调用(Draw Call)。 1.GPU实例化 使用: 2.绘…...
ubuntu开启黑屏现象解决
文章目录 前言一、问题描述二、解决方案1. 检查显卡驱动解决步骤: 2. 修复 GRUB 配置解决步骤: 3. 使用恢复模式解决步骤: 三、验证与总结 前言 在使用 Ubuntu 操作系统时,一些用户可能会遇到开机后屏幕黑屏的现象。这种问题可能…...
深度学习deeplearn3
# Jupyter Notebook魔法命令,用于在Notebook中内联显示图表 %matplotlib inline# 导入NumPy库,用于高效的数值计算 import numpy as np# 从matplotlib_inline库导入backend_inline模块,用于设置图表显示格式 from matplotlib_inline import b…...
