【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)

简介: 【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)

一. 中断控制 ( 基于 S3C6410 开发板 )



本节 基于 S3C 6410 开发板, 不同的开发板 以及 不同 的芯片 中断控制机制是不同的 ;




1. 关闭中断的两个步骤



(1) 关闭中断步骤

关闭中断步骤 :


1.步骤 1 ( 程序状态字寄存器设置 ) : 设置 程序状态字寄存器 ( CPSR ) 中对应的与 中断 相关的位;

2.步骤 2 ( 中断屏蔽寄存器设置 ) : 设置 中断屏蔽寄存器, 该寄存器的 使用方法在开发板芯片资料中有详细介绍;



2. CPRS 寄存器中的中断控制位



(1) CPRS 寄存器简介

程序状态字寄存器 :

image.png



1.寄存器内容 : 该寄存器 中 包含 ① 状态码标志位, ② 中断标志位, ③ 当前处理器工作模式 和 其它一些 ④ 状态 与 ⑤ 控制信息 ;

2.CPSR 寄存器 : 全称 Current Program Status Register ( 当前程序状态字寄存器 ), 保存的是当前的程序状态 ;

3.SPSR 寄存器 : 全称 Saved Program Status Register ( 程序状态保存寄存器 ), 每个异常都有对应的独立的 SPSR 寄存器, 当异常发生的时候, 先将 CPSR 寄存器中的值 保存到 SPSR 寄存器中, 以便 异常处理完毕后 再回到原来断点处 继续运行 ;


4.SPSR 寄存器分布 : 用户模式 和 系统模式 没有 对应的 SPSR 寄存器, 只有 5 种 异常模式才有对应的 SPSR 寄存器 ;

( 1 ) SPSR 寄存器读写 : 在 用户模式 或 系统模式 读写 SPSR 指令 会出现不可预测的错误或行为 ;



(2) CPRS 寄存器 中断控制 相关 位

CPRS 寄存器中断控制相关位 :

image.png



1.普通中断控制位 : I 位, 第 [ 7 ] 位, 如果设置了该位 可以 关闭 普通中断 ;

2.快速中断控制位 : F 位, 第 [ 6 ] 位, 如果设置了该位, 可以 关闭 快速中断 ;



3. 中断使能寄存器



参考手册 : S3C6410X.pdf ( 基于 6410 开发板 )


1.手册对应章节 : 12.6.5 章节 VECTORED INTERRUPT CONTROLLERS;

2.S3C6410芯片手册下载地址 :https://download.csdn.net/download/han1202012/10412045



(1) 中断使能寄存器简介

中断使能寄存器 ( VICINTENABLE ) :


1.分为两个寄存器 : 中断使能寄存器 分 两个寄存器 控制所有的中断打开功能;

( 1 ) 寄存器1 VIC0INTENABLE : 其地址是 0x71200010 ;

( 2 ) 寄存器2 VIC1INTENABLE : 其地址是 0x71300010 ;

image.png

2.寄存器位 : 这两个寄存器中, 每一位都对应着一种中断源;

3.中断关闭情况 : 在 重启的时候, 所有的中断都要被禁用 ;

4.寄存器功能 : 激活中断的请求线路, 允许中断信号能到达 处理器 ; 查看对应位的设置, 可以获取某种类型的中断是否可以到达 处理器 ;

( 1 ) 读取到 0 值 : 如果读取到的值 为 0, 那么 中断不可用;

( 1 ) 读取到 1 值 : 如果读取到的值 为 1, 那么 中断可用;

5.设置寄存器值 : 这两个寄存器 只能设置中断可以使用, 无法设置 屏蔽 中断, 如果设置 1 那么激活中断, 设置 0 没有任何效果, 如果要屏蔽中断, 那么需要使用 中断屏蔽寄存器 VICINTENCLEAR;

( 1 ) 设置 0 值 : 设置 0 值 没有任何效果;

( 2 ) 设置 1 值 : 设置 1 值 激活中断功能;

image.png




(2) 中断屏蔽寄存器简介

中断屏蔽寄存器 ( VICINTENCLEAR ) 简介 :


1.分为两个寄存器 : 中断 屏蔽 寄存器 分 两个寄存器 控制所有的中断 屏蔽 的功能;

( 1 ) 寄存器1 VIC0INTENABLE : 其地址是 0x71200010 ;

( 2 ) 寄存器2 VIC1INTENABLE : 其地址是 0x71300010 ;

image.png


2.寄存器位 : 这两个寄存器中, 每一位都对应着一种中断源;

3.功能概述 : 清除 中断屏蔽寄存器 ( VICINTENABLE ) 中 对应的位就可以屏蔽对应的中断 ;

( 1 ) 设置 0 值 : 没有任何效果 ;

( 2 ) 设置 1 值 : 屏蔽对应的中断源 ;







二. 关闭中断 代码示例



参考手册 : S3C6410X.pdf ( 基于 6410 开发板 )


1.手册对应章节 : 12.6.5 章节 VECTORED INTERRUPT CONTROLLERS;

2.S3C6410芯片手册下载地址 :https://download.csdn.net/download/han1202012/10412045


目录
相关文章
|
监控 网络协议 安全
验证嵌入式ARM32环境中4G模块的有效方法
验证嵌入式ARM32环境中4G模块的有效方法
324 0
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
545 0
|
编译器
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
439 0
|
存储 编译器 C语言
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
484 0
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
|
存储 Ubuntu 编译器
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
422 0
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
1396 0
|
数据处理
基于ARM的嵌入式原理与应用:ALU的功能与特点
基于ARM的嵌入式原理与应用:ALU的功能与特点
2502 0
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
459 3
|
Ubuntu Unix Linux
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)