中断优先级

【计算机组成原理】 输入/输出系统

依然范特西╮ 提交于 2019-12-18 02:35:31
I/O 系统基本概念 I/O 系统中的几个基本概念如下: 外部设备。包括输入/输出设备及通过输入。输出接口才能访问的外存储结构。 接口。在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换等。 输入设备,用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。 输出设备。用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。 外存设备。指除计算机内存及 CPU 缓存等外的存储器。硬磁盘、光盘等是最基本的外存设备。 一般来说,I/O 系统由 I/O 软件和 I/O 硬件两部分构成: I/O 软件。包括驱动程序、用户程序、管理程序、升级补丁等。通常采用 I/O 指令和通道指令实现 CPU 与 I/O 设备的信息交换。 I/O 硬件。包括外部设备、设备控制器和接口、I/O 总线等。通过设备控制器来控制 I/O 设备的具体动作:通过 I/O 接口与主机(总线)相连。 在输入/输出系统中,经常需要进行大量的数据传输,而传输过程中有各种不同的 I/O 控制方式,基本的控制方式有以下 4 种: 程序查询方式。由 CPU 通过程序不断查询 I/O 设备是否已经做好准备,从而控制 I/O 设备与主机交换信息。 程序中断方式。只在 I/O 设备准备就绪并向 CPU

ARM异常及中断处理介绍(中断是异常的一种)

谁都会走 提交于 2019-12-18 02:27:03
中断 概念 :是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。因硬件原因引起的中断过程的出现时不可预测的,即随机的,而软中断是事先安排好的。 中断源 概念 :可以引起中断的信号源。 异常优先级 ARM处理器中有7种类型的异常,按优先级 从高到低 的排列如下: 复位异常 (Reset)、 数据异常 (Data Abort)、 快速中断异常 (FIQ)、 外部中断异常 (IRQ)、 预取异常 (Prefetch Abort)、 软中断异常 (SWI)、 未定义指令异常 (Undefined interrupt)。 优先级最低的两种异常是软件中断异常和未定义指令异常。因为正在执行的指令不可能既是一条软中断指令,又是一条未定义指令,所以软中断异常和未定义指令异常享有相同的优先级。 注意 在ARM处理器中(Exception)和中断(Interrupt)有些差别,异常主要是从处理器被动接受异常的角度出发,而中断带有向处理器主动申请的色彩。此文中对“异常”和“中断”不做严格区分;两者都是指请求处理器打断正常的程序执行流程,进入特定程序循环的一种机制。 异常 概念 :异常由内部或外部源产生并引起处理器处理一个事件。在处理异常之前,处理器状态必须保留,一遍在异常处理程序完成后,原来的程序能够重新执行。同一时刻可能出现多个异常。 注意 当异常出现时

GPIO外部中断

爷,独闯天下 提交于 2019-12-17 21:38:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在STM32中,其每一个外设都可以产生中断。 中断分为分为 ①系统异常,内核 ②外部中断,外设 NVIC(Nested Vector Interrupt Controller ):嵌套向量中断控制器,属于内核外设,管理着包括内核片和片上所有外设的终端相关功能。 core_cm3.h与misc.h有相关函数 野火指南者内核中断有 10 个,外设中断有 60 个。 由NVIC->IPRx来控制 static void EXTI_NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStruct;//配置NVIC结构体NVIC_InitTypeDef; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);设置优先级分组 NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn ; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;//选择主优先级 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;//选择次优先级 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

I/O中断原理

老子叫甜甜 提交于 2019-12-14 18:50:28
目录 I/O中断原理 前言 什么是中断 中断类型 硬件中断 软件中断 I/O中断流程 无中断 有中断 中断处理 相关文献 I/O中断原理 前言 在 Windows内核原理-同步IO与异步IO 和 《高性能网络通讯原理》 两篇文章中,都出现了 中断 这两个字。本篇文章会对中断操作的原理进行说明。 什么是中断 中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 我们知道CPU是按指令顺序进行执行的,操作系统每过大约15ms会发生一次线程调度(Windows下),根据线程优先级先调度优先级高的线程。但是实际情况并没有那么简单,若我们接收到一个网络请求,如果要等当前线程执行完或15ms线程调度之后才去处理网络请求,网卡缓冲区很有可能会被占满,此时就发生了丢包。 中断类型 中断分为硬件中断和软件中断。 硬件中断 硬件中断即为硬件发出的中断信号,如I/O中断和硬件失效中断。 I/O中断:由I/O控制器产生,用于发送信号通知操作完成等信号。 硬件失效中断:如掉电或存储器奇偶错之类的故障。 软件中断 软件中断即为非硬件发出的中断信号,如程序中断和时钟中断。 程序中断:一些指令产生的异常(如算数移除、除数为0等)。 时钟中断

STM32开发 -- 低功耗模式详解

£可爱£侵袭症+ 提交于 2019-12-12 10:08:48
很多单片机都有低功耗模式,STM32 也不例外。当 CPU 不需继续运行时,可以利用多个低功耗模式来节省功耗。 这部分不是我负责,但是也是有必要看一下的。 参看: STM32F1开发指南-库函数版本_V3.2.pdf STM32中文参考手册_V10.pdf 一、低功耗模式 在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。 STM32有三种低功耗模式: ● 睡眠模式 (Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行) ● 停止模式 (所有的时钟都已停止) ● 待机模式 (1.8V电源关闭) 此外,在 运行模式 下,可以通过以下方式中的一种降低功耗: ● 降低系统时钟 在运行模式下,通过对预分频寄存器进行编程,可以降低任意一个系统时钟(SYSCLK、 HCLK、 PCLK1、 PCLK2)的速度。进入睡眠模式前,也可以利用预分频器来降低外设的时钟。 ● 关闭APB和AHB总线上未被使用的外设时钟。 在运行模式下,任何时候都可以通过停止为外设和内存提供时钟(HCLK和PCLKx)来减少功耗。为了在睡眠模式下更多地减少功耗

单片机中断函数的理解感悟

走远了吗. 提交于 2019-12-06 20:27:43
随着使用单片机次数越来越多,对单片机中断处理函数的理解更加升入。下面写了曾经血的教训,供大家参考。 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------       1、单片机的不同中断是有优先级的区别,当同时发生两个不同中断时,一般先处理优先级别 低 的中断处理函数。特殊的处理器对中断的定义不同。       2、进入中断处理函数,一定记得清理标志位。或者第一件事情就是 手动 清理标志位。       3、单片机处理中断的时候,该函数是占用了CPU的线程。如果该中断市定时器中断,那么在中断处理完成之前,该定时器是停下来不工作的。( 已经验证 )       4、由于第三点的原因,如果在中断处理函数里面使用了 死 循环。那就会CPU线程就会永远呆在这个处理函数里面,出不来了。       5、中断函数 不 需要 手动 调用,满足规定的条件就会自动调用。因此,大多数编译器都内部定义了中断函数地址及调用方式,中断函数的名称也不能乱取。 来源: https://www.cnblogs.com/cjyc/p

利用AXI-DMA批量发送数据到DMA

旧街凉风 提交于 2019-12-06 04:55:43
1.1 主函数 int main ( void ) { XGpio_Initialize(&Gpio, AXI_GPIO_DEV_ID); XGpio_SetDataDirection(&Gpio, 1, 0); init_intr_sys(); XGpio_DiscreteWrite(&Gpio, 1, 1); axi_dma_test(); } 1.2 三个简单函数 (1)、XGpio_Initialize(&Gpio, AXI_GPIO_DEV_ID); 本语句对GPIO进行初始化,对实例数据进行配置。 (2)、XGpio_SetDataDirection(&Gpio, 1, 0); 设置GPIO的方向,向通道1写0,0:输出,1:输入。 (3)、XGpio_DiscreteWrite(&Gpio, 1, 1); 设置GPIO的输出为1。 一、 init_intr_sys函数分析 1、DMA_Intr_Init(&AxiDma,0); DMA中断实例化函数,将要配置的DMA信息先lookupConfig再进行CfgInitialize,DMA采用块模式(Block mode),如果是Sg模式,则配置失败。 2、Timer_init(&Timer,TIMER_LOAD_VALUE,0); 定时器初始化函数,传入参数有定时器结构、加载值,设备ID

N76E003双串口无法进UART1中断问题解决办法

邮差的信 提交于 2019-12-06 04:55:30
最近在做有关N76E003的项目,使用到双串口。串口的配置没有特殊要求,最基本的配置 void Uart0_Init(void) { //—————————串口0引脚初始化———————— set_P06; set_P07; set_ES; //enable uart0 interrupt InitialUART0_Timer1(9600); //UART0 Baudrate initial,T1M=0,SMOD=0 } void Uart1_Init(void) { //—————————串口1引脚初始化———————— set_P02; set_P16; set_ES_1; //enable uart1 interrupt InitialUART1_Timer3(9600); } 并配置了中断函数 void SerialPort0_ISR(void) interrupt 4 { if(RI) { /* if reception occur */ clr_RI; /* clear reception flag for next reception */ uart_receive_input(SBUF); } } void SerialPort1_ISR(void) interrupt 15 { if(RI_1) { clr_RI_1; uart1_receive_input

ARM的七种工作模式

折月煮酒 提交于 2019-12-06 02:27:18
一、ARM处理器7种工作模式(特权模式 特权模式异常模式) 用户模式(USR):正常程序执行模式,不能直接切换到其他模式 系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权 快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式 中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式 管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发) 中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处 未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式 表3-1 ARM处理器工作模式 处理器工作模式 特权模式 异常模式 说明 用户(user)模式 用户程序运行模式 系统(system)模式 该组模式下可以任意访问系统资源 运行特权级的操作系统任务 一般中断(IRQ)模式 通常由系统异常状态切换进该组模式 普通中断模式 快速中断(FIQ)模式 快速中断模式 管理(supervisor)模式 提供操作系统使用的一种保护模式,swi命令状态 中止(abort)模式 虚拟内存管理和内存数据访问保护 未定义指令终止(undefined)模式 支持通过软件仿真硬件的协处理

单片机期末复习

心不动则不痛 提交于 2019-12-05 18:17:55
一、硬件结构 1.1部分引脚说明 RST:复位引脚,两个机器周期的高电平后复位 ALE:锁存低八位地址 EA:高电平时,访问内部程序存储器(ROM) P0:双向IO口、分时复用-低八位地址,数据总线 P1:双向IO口 P2:双向IO口,访问外部存储器时,提供高八位地址总线 P3:双向IO口,有第二功能 1.2存储器 物理上分为:4 个空间 即片内ROM、 、 片外ROM(程序存储器) 片内RAM、 、 片外RAM(数据存储器) 逻辑上分为: : 3 个空间 , 程序内存(ROM) ( 片内 、 外 ) 统一编址 MOVC 数据存储器 ( 片内) ) MOV 数据存储器(片外) MOVX 1.2.1程序存储器(ROM 作用:存储用户程序和表格常数 特殊单元: 0000H:复位后从这里开始执行程序 中断单元: 外中断0 (INT0 ) 0003H 定时器0 (T0 ) 000BH 外中断1 (INT1 ) 0013H 定时器1 (T1 ) 001BH 串行口(UART ) 0023H 1.2.2内部数据存储器(RAM 通用工作寄存器组 00~1FH共32个,四组通用寄存器,即(四组R0~R7) 可以使用RS1(PSW.4)RS0(PSW.3)来切换寄存器区 RS1 RS0 寄存器区 内存地址 00 0区 00-07H 01 1区 08-0FH 10 2区 10-17H 11 3区 18