S3C2440中断处理

news2024/11/24 9:11:06

一、中断处理机制概述

中断是CPU在执行程序过程中,遇到急需处理的事件时,暂时停止当前程序的执行,转而执行处理该事件的中断服务程序,并在处理完毕后返回原程序继续执行的过程。S3C2440提供了丰富的中断源,包括内部中断和外部中断,以及支持子中断的功能。

二、中断处理得流程

上图为中断处理的框图,首先中断源分为有子中断和无子中断两类;
(1)当有子中断时,SUBSRCPND和SRCPND会自动置位,紧接着需要将中断屏蔽寄存器和次级中断屏蔽寄存器(SUBMASK和INTMSK以及INTSUBMSK设置为0)使能(开启中断服务),此时表明中断设置成功;
接下来使用INTOFFSET中断偏移寄存器可以准确定位到中断处理函数的地址处,进而进行中断处理;需要注意的是在中断处理函数中,当处理完业务之后,必须将之前因中断产生而置位的中断标志位清除(一般写入1即可),顺序必须遵循如上框图,从左至右,依次清除;
(2)无子中断的处理过程和有子中断的基本一致,省略掉子中断的那一部分即可;

二、中断实现

外部中断:通过引脚接收
S3C2440有24个外部中断引脚
EXTINT0 —》设置信号
EINTMASK–》信号使能
EINTPEND–》 信号标志

 

 

 

void deal_eint8_23(void)
{
	 if(EINTPEND & (1 << EINT8))
	 {
		EINTPEND |= (0x01 << EINT8);
	 }
}

void deal_irq_c(void)
{
	unsigned int irq_num = INTOFFSET;
	switch(irq_num)
	{
		case EINT8_23:
		 deal_eint8_23();
		break;
		default:
		break;
	}

	SRCPND |= (1 << irq_num);
	INTPND = INTPND;
}

void eint8_init(void)
{
	//配置GPG0功能位eint8
	GPGCON &= ~(0x3 << 0);
	GPGCON |= (0x2 << 0);

	//设置eint8的触发方式
	EXTINT1 &= ~(0x7 << 0);
	EXTINT1 |= (0x2 << 0);

	//使能eint8
	EINTMASK &= ~(0x1 << 8);

	//使能eint8_23
	INTMSK &= ~(0x1 << 5);
}

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

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

相关文章

微信小程序:开发工具修改js编译后还是旧的js逻辑

1、清理所有缓存&#xff0c;重新导入项目 2、语法存在问题无法编译,导致内存堆积&#xff0c;无法自动编译 3、npm 存在问题&#xff0c;可以重新构建 4、有时候编译器也没报错都是一切正常&#xff0c;但是编译后依然不是最新。这个时候需要考虑下电脑是否存在问题&#xff0…

使用gitee存储项目

gitee地址&#xff1a;Gitee - 基于 Git 的代码托管和研发协作平台 创建gitee远程仓库 将远程仓库内容拉取到本地仓库 复制下面这个地址 通过小乌龟便捷推送拉取代码&#xff1a;https://blog.csdn.net/m0_65520060/article/details/140091437

Ubuntu | 解决 VMware 中 Ubuntu 虚拟机磁盘空间不足的问题

目录 一、存在的问题二、解决的步骤第一步&#xff1a;扩展磁盘空间第二步&#xff1a;查看磁盘空间使用情况第三步&#xff1a;安装分区工具第四步&#xff1a;启动分区工具第五步&#xff1a;修改挂载文件夹的读写权限第六步&#xff1a;扩展文件系统大小第七步&#xff1a;验…

Prometheus2:被监控机器安装node_exporter与配置

1. 下载node_exporter [rootlocalhost ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz 2. 解压缩 [rootlocalhost ~]# tar -zxvf node_exporter-1.8.2.linux-amd64.tar.gz 3. 复制到/usrl/local路…

sed命令用法与案例

在Linux操作系统中&#xff0c;sed&#xff08;stream editor&#xff09;是一种功能强大的文本处理工具&#xff0c;用于执行文本的查找、替换、删除、新增等操作。sed命令以其简洁的语法和高效的执行速度&#xff0c;在自动化脚本和文本处理中扮演着重要角色。本文将探讨sed命…

探索串行通信的奥秘:Python中的pyserial库

文章目录 探索串行通信的奥秘&#xff1a;Python中的pyserial库背景&#xff1a;为何选择pyserial&#xff1f;pyserial是什么&#xff1f;如何安装pyserial&#xff1f;pyserial的五个简单函数场景应用&#xff1a;pyserial在实际中的使用常见bug及解决方案总结 探索串行通信的…

HR招聘,如何解决招聘需求不明确的问题

在HR招聘过程中&#xff0c;遇到招聘需求不明确的问题时&#xff0c;可以通过一系列措施来明确需求&#xff0c;提高招聘效率和质量。同时&#xff0c;在线人才测评、职业性格测试、认知能力测试和心理健康测试等工具也可以作为辅助手段&#xff0c;帮助HR更准确地评估候选人。…

【大模型从入门到精通33】开源库框架LangChain RAG 系统中的问答技术3

这里写目录标题 理论问答过程的三个主要阶段传递文档片段至 LM 上下文窗口的局限性及策略向量数据库的重要性RetrievalQA 链的作用MapReduce 与 Refine 的区别分布式系统中的实际考量实验的重要性RetrievalQA 链的主要限制对话记忆的重要性 实践初始化向量数据库设置 Retrieval…

GD32双路CAN踩坑记录

GD32双路CAN踩坑记录 目录 GD32双路CAN踩坑记录1 问题描述2 原因分析3 解决办法4 CAN配置参考代码 1 问题描述 GD32的CAN1无法进入接收中断&#xff0c;收不到数据。 注&#xff1a;MCU使用的是GD32E50x&#xff0c;其他型号不确定是否一样&#xff0c;本文只以GD32E50x举例说…

【Docker】gitea的ssh容器直通

本文首发于 ❄️慕雪的寒舍 1.跟着文档走 gitea的安装比较简单&#xff0c;直接使用官方文档中的docker-compose文件即可。如果想实现ssh容器直通&#xff0c;需要对这个docker-compose文件做一定修改。 如果你还没有安装docker&#xff0c;参考本站教程 linux安装docker&…

QT-贪吃蛇小游戏

QT-贪吃蛇小游戏 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #include "Food.h" #include <QTime> #include <time.h> #include "Snake.h"Food::Food(int foodSize):foodSize(foodSize) {coordinate.x -1;coordinate.…

多线程(4)——单例模式、阻塞队列、线程池、定时器

1. 多线程案例 1.1 单例模式 单例模式能保证某个类在程序中只存在唯一一份实例&#xff0c;不会创建出多个实例&#xff08;这一点在很多场景上都需要&#xff0c;比如 JDBC 中的 DataSource 实例就只需要一个 tip&#xff1a;设计模式就是编写代码过程中的 “软性约束”&am…

系统稳定性建设的深度剖析与未来展望

一、系统稳定性的重要意义 系统稳定性是系统正常运行的关键&#xff0c;其缺失会导致严重后果&#xff0c;如经济损失、用户流失等。 以在线学习平台为例&#xff0c;如果系统频繁出现卡顿、掉线等问题&#xff0c;影响用户的学习体验&#xff0c;导致用户流失&#xff0c;平…

【HTML】从0开始构建HTML页面

1、HTML文档基本格式 1.1、!DOCTYPE:文档类型声明 1.2、html:根标签 1.3、head:头部标签 1.4、body:主体标签 2、头部相关标签 2.1、< title> < title>标签用于定义HTML页面的标题&#xff0c;即给网页取一个名字&#xff0c;必须位于< head>标签之内。 …

Programmatically add website content to OpenAI with C#

题意&#xff1a;使用 C# 以编程方式将网站内容添加到 OpenAI。 问题背景&#xff1a; Our goal is to have a ChatGPT answer questions about our websites content. 我们的目标是让 ChatGPT 回答关于我们网站内容的问题。 We are trying to integrate something similar t…

设计模式笔记01(java版)

文章目录 设计模式概述学习设计模式的必要性设计模式分类创建型模式结构型模式行为型模式 UML类图概述类图的作用类图表示法类的表示方式类与类之间关系的表示方式1&#xff0c;单向关联2&#xff0c;双向关联3&#xff0c;自关联聚合关系组合关系依赖关系继承关系实现关系 软件…

【hot100篇-python刷题记录】【买卖股票的最佳时机】

摆烂几天,又来了。 R5-贪心篇(不像) 贪心的常规思路是找到贪心切入点,例如最经典的算法是安排最多活动问题,需要以结束时间排序,然后遍历不冲突,计算最大数即可(每次都选择最早结束的活动)。 贪心算法的使用需要满足贪心特征。即局部最优解等于全局最优解。 对于本…

Docker 修改容器端口映射(以 Portainer 为例)

文章目录 背景解决第1步:找到容器id第2步:查找docker根目录第3步:停止docker服务第4步:修改容器的hostconfig.json配置文件第5步:启动docker服务第6步:验证参考背景 项目中有个服务也使用了9000端口,而Portainer的默认端口也是9000。结果可想而知,端口冲突,肯定有一个…

stable diffusion inpainting(img2img+inpaint/inpaint-model)

https://zhuanlan.zhihu.com/p/681250295https://zhuanlan.zhihu.com/p/681250295AIGC专栏4——Stable Diffusion原理解析-inpaint修复图片为例_diffusion inpaint-CSDN博客文章浏览阅读1.7w次,点赞42次,收藏79次。Inpaint是Stable Diffusion中的常用方法,一起简单学习一下。…

CAS-ViT实战:使用CAS-ViT实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…