精华内容
下载资源
问答
  • (一)中断 (二)定时器,计数器中断 TL0低八位先进行存储,达到0XF,向上进一,直到...(2)控制寄存器TCON:(低四位控制外部中断,高四位控制计数器启动和中断申请) (3)定时器的四种工作方式: ...

    (一)中断
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (二)定时器,计数器中断
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    TL0低八位先进行存储,达到0XF,向上进一,直到高低八位都满时就可以产生中断或者控制TF0口。
    在这里插入图片描述
    (1).
    TMOD低四位控制T0,高四位控制T1。
    在这里插入图片描述
    GATE:(门控位)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (2)控制寄存器TCON:(低四位控制外部中断,高四位控制计数器启动和中断申请)
    在这里插入图片描述
    (3)定时器的四种工作方式:
    在这里插入图片描述
    在这里插入图片描述
    定时器开启工作原理:
    在这里插入图片描述
    四种工作方式:(机器周期(脉冲)和T0引脚来绝定电路触发)
    区别在于TH0和TL0的位数和输出)
    常用1和2
    1.
    在这里插入图片描述
    2.用于比较精确的脉冲信号发射器:
    在这里插入图片描述
    3.
    在这里插入图片描述
    程序化步奏:
    在这里插入图片描述
    计算:初值==2^n-N(公式要根据你使用那种方式0.1.2.3四个方式),例如(65535-1000+1),N=1000就是1ms/1us=1000,要想溢出要达到65536,所以定时一毫秒就是初值64536=FC18H(十六进制)
    在这里插入图片描述
    (三)定时器中断:
    在这里插入图片描述
    定时器操作代码:

    #include"reg52.h"
    
    typedef signed char int8;
    typedef signed int  int16;
    typedef signed long  int32;
    typedef unsigned char uint8;   //字符型
    typedef unsigned int uint16;
    typedef unsigned long uint32;
    
    
    sbit led=P2^0;   //D1
    
         //***《此函数需要对应以上笔记进行熟悉识别》***//
    	
    void Time0Init ()	
    {    //或运算相当于TMOD=TMOD||0X01,只要有一个为一就为一
    	TMOD |=0X01;   //定时计数选择,工作方式选择,门控位条件
    	TH0=0XFC;      //定时器初值FC18H,定时一毫秒
    	TL0=0X18;      
    	ET0   =1;      //定时器控制中断允许位
    	EA    =1;      //总开关
    	TR0   =1;      //启动定时计数器
    }
    
    //无需定时器函数,因为我们需要用定时器进行计时
    //void delay(uint16 x_ms)			   //延时毫秒
    //{
    //	uint16 i, j;
    //	for (i = x_ms; i > 0; i--)
    //		for (j = 114; j > 0; j--);
    //}
    
    void Time0() interrupt 0
    {
    	static uint16 i;  //1秒=1000毫秒
    	TH0=0XFC;         //TH和TL每执行一次,耗时1毫秒
    	TL0=0X18;
    	i++;
    	if(i==1000)       //所以i要累计到1000
    	{
    		led=~led;
    	}
    }
    
    void main()
    {
    	Time0Init();
    	while(1);
    }
    
    展开全文
  • STM32外部中断/事件控制器 (EXTI)

    千次阅读 2021-12-16 20:30:00
    STM32外部中断/事件控制器 (EXTI) 关于STM32中断与事件的区别,请参考大牛写的博客: STM32中中断与事件的区别 外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可 单独进行配置...

    STM32外部中断/事件控制器 (EXTI)

    关于STM32中断与事件的区别,请参考大牛写的博客:
    STM32中中断与事件的区别

    外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可 单独进行配置,
    以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单
    独屏蔽。挂起寄存器用于保持中断请求的状态线。

    功能说明

    要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在 中断屏蔽寄
    存器的相应位写“1”使能中断请求。当外部中断线上出现选定信号沿时,便会产生中断请求,对应的挂起位
    也会置 1。在挂起寄存器的对应位写“1”,将清除该中断请求。要产生事件,必须先配置好并使能事件线。
    根据需要的边沿检测设置 2 个触发寄存器,同时 在事件屏蔽寄存器的相应位写“1”允许事件请求。当事件线
    上出现选定信号沿时,便会产生事件脉冲,对应的挂起位不会置 1。通过在软件中对软件中断/事件寄存器
    写“1”,也可以产生中断/事件请求。

    硬件中断选择

    要配置 23 根线作为中断源,请执行以下步骤:
    ● 配置 23 根中断线的屏蔽位 (EXTI_IMR)
    ● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
    ● 配置对应到外部中断控制器 (EXTI) 的 NVIC中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。

    硬件事件选择

    要配置 23 根线作为事件源,请执行以下步骤:
    ● 配置 23 根事件线的屏蔽位 (EXTI_EMR)
    ● 配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)

    软件中断/事件选择

    可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。
    ● 配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR)
    ● 在软件中断寄存器设置相应的请求位 (EXTI_SWIER)

    GPIO中断线

    GPIOX0都是共用一根总线的。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    配置步骤:

    拿硬件中断来说:
    ● 配置 23 根中断线的屏蔽位 (EXTI_IMR)
    ● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
    ● 配置对应到外部中断控制器 (EXTI) 的 NVIC中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。

    比如我要开GPIO_A0的外部中断,按照上述步骤:
    1.配置中断屏蔽位:PA0是挂在EXTI0线上,所以EXTI_IMR bit0 = 1
    2.配置触发选择位:也是EXTI_RTSR 和 EXTI_FTSR 的bit0 = 1
    3.调用NVIC控制寄存器开启EXTI0的中断

    这里只是讲到了使用中断线,那么一根中断线上挂载了那么多GPIO的中断,我们怎么判断具体是哪个GPIO[0-15]
    发出的中断呢?
    这里就要提到SYSCFG外部中断配置寄存器了:
    在这里插入图片描述
    设置下面的寄存器值就能把具体的gpio跟中断线连接起来。
    代码实现:

    void KEY_IRQ_NVIC_init()
    {
        NVIC_InitTypeDef NVIC_InitStructure;
    	NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
    	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0X01;
    	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0X02;
    	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    	NVIC_Init(&NVIC_InitStructure);
    }
    
    void KEY_IRQ_init()
    {
        EXTI_InitTypeDef exit_def;
        EXTI_StructInit(&exit_def);
    
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//ENABLE CLOCK
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0);
    
        exit_def.EXTI_Line = EXTI_Line0;
        exit_def.EXTI_Mode = EXTI_Mode_Interrupt;
        exit_def.EXTI_Trigger = EXTI_Trigger_Falling;
        exit_def.EXTI_LineCmd = ENABLE;
        EXTI_Init(&exit_def);
        KEY_IRQ_NVIC_init();
    }
    
    void KEY_Init(){
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
        GPIO_InitStructure.GPIO_Pin = KEY1_PIN;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
    
        KEY_IRQ_init();
    }
    
    void EXTI0_IRQHandler()
    {
        //EXTI_ClearITPendingBit(EXTI_Line0); 跟EXTI_ClearFlag(EXTI_Line0);功能一样的,都是清理挂起寄存器。
        EXTI_ClearFlag(EXTI_Line0);
        LED1_ON();
        printf("you press key\n");
    }
    
    展开全文
  • 5.2.3 中断控制器8259·弄清芯片外部引线以便将它们连接到系统中;·了解它们的工作方式和工作特点,以便有选择地应用它们的某些工作方式;·理解芯片内部的控制字、命令字,以便对它们进行编程;·了解每块芯片所占...

    5.2.3 中断控制器8259

    ·弄清芯片外部引线以便将它们连接到系统中;

    ·了解它们的工作方式和工作特点,以便有选择地应用它们的某些工作方式;

    ·理解芯片内部的控制字、命令字,以便对它们进行编程;

    ·了解每块芯片所占的地址,以便具体进行连接;

    ·在上述基础上实现对芯片的初始化及具体应用。

    下面我们就开始具体介绍可编程中断控制器8259。

    1. 8259的外部引线

    可编程中断控制器8259外部引线图如图5.15所示。

    D0-D7为双向数据线,与系统总线的数据线相连接。

    WR、RD 为写和读控制信号,与系统总线的读写信号相连接。

    CS为片选信号,只有CS 为低电平时,才能实现CPU对8259的写或读操作。

    A0是8259内部寄存器的选择信号。

    INT为8259的中断请求输出信号,可直接接到CPU的INTR输入端。

    INIT为中断响应输入信号。

    CAS0~CAS2为级联控制线。

    SP/EN 为双功能引线。

    IR0~IR7中断请求输入端。

    8259的内部有多个寄存器,其中包括:

    中断请求寄存器(IRR),其内部保存着所有外部中断源IR0~IR7的中断请求状态。

    中断服务寄存器(ISR),用来保存所有正在服务的中断源。当8259收到中断结束命令时,其寄存的状态进行调整。

    中断屏蔽寄存器(IMR),保存着被屏蔽的所有中断源。其屏蔽功能可用命令修改。

    1295e829bef2e285917a0375cfe26edd.png

    a04b223741de7908b20f75d00ea73384.png

    2. 8259的工作方式

    通过编程,可以设置8259的不同工作方式,以便适应不同环境的需要。这也说明8259工作的灵活性和适应性。

    (1) 8080/85与8086/88工作模式

    (2) 特殊屏蔽方式

    df1d95a8f4225bb4140ddf1130e7e0e2.png

    dafe6574b04d87b1182b2033bab74cde.png

    在正常情况下,当一个中断请求被响应时,8259将禁止所有同级及更低优先级中断请求,这就称为一般屏蔽方式。

    但是,在一特殊情况下,希望也允许较低优先级的中断请求产生中断。这时,可用特殊屏蔽方式。要做到这一点,需要利用后面将要提到的8259初始化命令字。

    一个特殊屏蔽方式的示意图如图5.19所示,其中SMM等需要参看后面的命令字的定义。

    9699aa30c9248bf6c83dfb3160aba8a1.png

    (3) 中断结束

    8259中,中断结束是利用复位ISR中的相应位来实现的。

    具体有两种方法:

    ① 自动结束。

    ② 利用命令结束。

    (a)一般中断结束命令(EOI)。

    (b)特殊中断结束命令(SEOI)。

    (4)优先级循环

    根据8259命令字的规定,它有两种优先级规定:循环优先级和固定优先级。

    循环优先级有3个结构:自动优先级循环用于中断源具有相等优先级的情况。

    (5)查询状态

    通过将操作命令字OCW3中的P位置1(后面要提到),可以查询8259的状态。

    253615885fd854cfbb8290b8dc0438e6.png

    3. 8259的内部控制字

    (1)初始化命令字

    ①初始化命令字ICW1。在A0=0,D4=1时为写入,各位的功能见图5.21。

    ②初始化命令字ICW2。

    ③初始化命令字ICW3。

    ④初始化命令字ICW4。

    9ccf1f5b72abd0ce946b8c53559afb0e.png

    d869534f647ca06c6c94ed0a36892cc1.png

    75b7f724af62a42dc7c820b20ca52e10.png

    7d03e63310f35d0aca01967914a638a0.png

    (2) 操作命令字OCW

    ①操作命令字OCW1。

    ②操作命令字OCW2。

    d5ba444e3b1357613ebe39a16feb7501.png

    R为优先级循环控制位,R=1为循环优先级;R=0为固定优先级。 L2、L1、L0为系统最低优先级编码,用它们来指定哪个IR优先级最低。

    EOI是中断结束命令。该位为1时,将复位现行中断的中断服务寄存器中的相应位。在非自动EOI的情况下,需要用OCW2来复位当前最高优先级所对应的位。

    SL用于选择L2、L1、L0编码。当SL=1时,L2~L0编码有效。SL=0时,L2~L0编码无效。除上述所说的外,R,SL,EOI编码功能见图5.26和表5.1。

    813c099507fe3ea6271f97b34a368c95.png

    4850989b52cde963dd419248a1ed952d.png

    ③操作命令字OCW3。OCW3可用以设置查询方式、特殊屏蔽方式以及读8259的中断请求寄存器IRR、

    中断服务寄存器ISR、中断屏蔽寄存器IMR的当前状态。OCW3各位功能如图5.27所示。

    f941a8afa421192c01f0f269712e333f.png

    4. 8259的寻址与连接

    为了使8259按照设计者的要求工作,就需要利用软件将初始化命令及操作命令字写入8259;

    另一方面为了知道8259的工作状态,又必须将其内部的一些寄存器的内容读出来。对寄存器和命令的访问控制如表5.2所示。

    8551e5da59963a85108d57212eaeaa68.png

    6b0f1c464d7b1f6e29bfe64b93a9980f.png

    5. 8259的初始化使用

    下面是8259的初始化程序:

    SET59A:MOV DX,0FF00H ;8259A的地址,A0=0

    MOVAL,13H; ICW1,LT1M=0,单片,需要ICW4

    OUT DX,AL

    MOV DX,0FF02H;8259地址,此时A0=1

    MOV AL,48H;ICW2,中断向量码

    OUT DX,AL

    MOV AL,03H ;ICW4,8086/88模式,自动EOI,非缓冲

    OUT DX,AL;方式,一般全嵌套

    MOV AL,0E0H; OCW1,屏蔽IR5,IR6,IR7

    因为未用到这3个中断输入

    OUT DX,AL

    0a81628c2788e67216634a3f41fdb334.png

    MOV DX,0FF02H

    MOV AL,0;取OCW1为00H

    OUT DX,AL;取00H写入IMR

    IN AL,DX;读IMR

    OR AL,AL;判断其内容为00H否

    JNZ IMERR

    MOV AL,0FFH

    OUT DX,AL

    IN AL,DX

    ADD AL,1

    JNZ IMERR

    在读IMR时,可直接在对应A0=1的地址上读出;但要读IRR或ISR时,则必须先向8259写入一个命令字OCW3。以下是读出ISR内容的一段程序:

    MOV DX,0FF00H ;对应A0=0

    MOV AL,0BH ;0BH为OCW3

    OUT DX,AL ;OCW3写入8259

    IN AL,DX ;读出ISR的内容,放在AL中

    具体做法如下:

    (1) 编写20ms中断服务程序

    CLOCK PROC FAR

    PUSH AX

    PUSH SI

    MOV AX,SEGTIMER

    MOV DS,AX

    MOV SI,OFFSETTIMER

    MOV AL,[SI] ;取50次计数

    INC AL

    MOV[SI],AL

    CMP AL,50 ;判1s到否?

    JNE TRNED

    MOV AL,0

    MOV [SI],AL

    MOV AL,[SI+1] ;取60s计数

    ADD AL,1

    DAA

    MOV [SI+1],AL

    CMP AL,60H ;判1min到否?

    JNE TRNED

    MOV AL,0

    MOV [SI+1],AL

    MOVAL, [SI+2] ;取60min计数

    ADD AL,1

    DAA

    MOV [SI+2],AL

    CMP AL,60H ;判1h到否?

    JNE TRNED

    MOV AL,0

    MOV [SI+2],AL

    MOV AL,[SI+3];取小时计数

    ADD AL,1

    DAA

    MOV [SI+3],AL

    CMP AL,24H

    JNE TRNED

    MOV AL,0

    MOV [SI+3],AL

    TRNED:POP SI

    POP AX

    STI

    IRET

    ENDP

    (2)确定中断向量,初始化8259

    (3)初始化中断向量表

    (a)直接编程初始化中断向量表

    INTITB:MOV AX,0000H

    MOV DS,AX

    MOV SI,0120H

    MOV DX,OFFSETCLOCK

    MOV [SI],DX

    MOV DX,SEGCLOCK

    MOV [SI+2],DX

    (b) DOS系统调用

    若在DOS下工作,则可采用DOS系统调用:

    INT 21H的功能25H

    25H→AH

    中断向量码→AL

    中断服务程序段:偏移量→DS:DX

    程序如下:

    MOV AH,25H ;功能号

    MOV AL,48H ;中断向量码

    MOV DX,SEGCLOCK

    MOV DS,DX

    MOV DX,OFFSETCLOCK

    INT21H

    6. 8259的级联

    当微型机系统中的中断源较多,一片8259不能解决问题时,可以采用级联工作方式。这时指定一片8259为主控芯片,它的INT接到CPU上而其余的8259芯片均作为

    从属芯片,其INT输出接到主控芯片的IR输入端。由于主控8259有8个IR输入端,故一个主控8259可以连接8片从属8259,最多允许有64个IR输入。

    9d2e1e66c1296c1fad281090ea4770d4.png

    展开全文
  • GIC通用中断控制

    2021-02-02 09:05:15
    一般在系统中,中断控制分为三个部分:模块、中断控制器和处理器。其中模块通常由寄存器控制是否使能中断中断触发条件等;中断控制器可以管理中断的优先级等,而处理器则由寄存器设置用来响应中断。 1.1 GIC结构 ...

    1. GIC简介
    操作系统中,中断是很重要的组成部分。有了中断系统才可以不用一直轮询(polling)是否有事件发生,系统效率才得以提高。一般在系统中,中断控制分为三个部分:模块、中断控制器和处理器。其中模块通常由寄存器控制是否使能中断和中断触发条件等;中断控制器可以管理中断的优先级等,而处理器则由寄存器设置用来响应中断。
    1.1 GIC结构
    作为 ARM 系统中通用中断控制器的是 GIC(Generic Interrupt Controller),目前有四个版本,V1~V4(V2最多支持8个ARM core,V3/V4支持更多的ARM core,主要用于ARM64系统结构)。本文主要描述的是GIC-400,它更适合嵌入式系统,符合v2版本的GIC architecture specification。GIC-400通过AMBA(Advanced Microcontroller Bus Architecture)片上总线连接到一个或者多个ARM处理器上。
    在这里插入图片描述
    从图 1.1中可以看出, GIC 是联系外设中断和 CPU 的桥梁,也是各 CPU 之间中断互联的通道(也带有管理功能),它负责检测、管理、分发中断,可以做到:
    1、使能或禁止中断;
    2、把中断分组到Group0还是Group1(Group0作为安全模式使用连接FIQ ,Group1 作为非安全模式使用,连接IRQ );
    3、多核系统中将中断分配到不同处理器上;
    4、设置电平触发还是边沿触发方式(不等于外设的触发方式);
    5、虚拟化扩展。
    ARM CPU 对外的连接只有2 个中断: IRQ和FIQ ,相对应的处理模式分别是一般中断(IRQ )处理模式和快速中断(FIQ )处理模式。所以GIC 最后要把中断汇集成2 条线,与CPU 对接。
    从图 1.2可以看出, GIC 可以清晰的划分成两个部分:分发器( Distributor )和 CPU 接口(CPU Interface )。
    在这里插入图片描述
    其中各个子中断使能,设置触发方式,优先级排序,分发到哪个 CPU 上这些功能由分发器负责;总的中断的使能,状态的维护由接口负责。

    1.1.1 分发器功能
    分发器的主要的作用是检测各个中断源的状态,控制各个中断源的行为,分发各个中断源产生的中断事件到指定的一个或者多个CPU接口上。虽然分发器可以管理多个中断源,但是它总是把优先级最高的那个中断请求送往CPU接口。分发器对中断的控制包括:
    (a)中断使能或禁能控制。分发器对中断的控制分成两个级别,一个是全局中断的控制(GIC_DIST_CTRL),一旦禁能了全局的中断,那么任何的中断源产生的中断事件都不会被传递到CPU接口;另外一个级别是对针对各个中断源进行控制(GIC_DIST_ENABLE_CLEAR),禁能某一个中断源会导致该中断事件不会分发到CPU接口,但不影响其他中断源产生中断事件的分发。
    (b)控制将当前优先级最高的中断事件分发到一个或者一组CPU接口。
    (c)优先级控制。
    (d)中断属性设定,例如是电平触发还是边沿触发。
    (e)中断的设定。
    分发器可以管理若干个中断源,这些中断源用ID来标识,我们称之interrupt ID。

    1.1.2 CPU接口功能
    CPU接口主要用于和CPU进行接口。主要功能包括:
    (a)使能或者禁能CPU接口向连接的CPU提交中断事件。对于ARM,CPU接口和CPU之间的中断信号线是nIRQCPU和nFIQCPU。如果禁能了中断,那么即便是分发器分发了一个中断事件到CPU接口,但是也不会提交指定的nIRQ或者nFIQ通知CPU。
    (b)ackowledging中断。CPU会向CPU接口应答中断,中断一旦被应答,分发器就会把该中断的状态从pending状态修改成active,如果没有后续pending的中断,那么CPU 接口就会deassert nIRQCPU和nFIQCPU信号线。如果在这个过程中又产生了新的中断,那么分发器就会把该中断的状态从pending状态修改成pending and active。此时,CPU接口仍然会保持nIRQ或者nFIQ信号的asserted状态,也就是向CPU通知下一个中断。
    (c)中断处理完毕的通知。当中断处理器处理完了一个中断的时候,会向写CPU 接口的寄存器从而通知GIC已经处理完该中断。做这个动作一方面是通知分发器将中断状态修改为deactive,另外一方面,可以允许其他的pending的中断向CPU接口提交。
    (d)设定优先级掩码。通过优先级掩码可以mask掉一些优先级比较低的中断,这些中断不会通知到CPU。
    (e)设定中断抢占的策略。
    (f)在多个中断事件同时到来的时候,选择一个优先级最高的通知CPU。

    1.3 中断处理流程
    中断的处理流程是:分发器把收集来的中断先缓存,依次把优先级最高的中断请求送往CPU接口,CPU读取一个中断,其实就是读取接口的一个寄存器,只不过这个寄存器存放的是中断号,此时中断的状态由pending转为active,CPU处理完了以后,将中断号写入GIC的接口,告诉GIC处理完了,可以将这个中断清理,如图 1.3。
    在这里插入图片描述
    1.4 GIC中断类型
    GIC 中断类型有3种:SGI(Software-generated interrupt)、PPI(Private peripheral interrupt )、SPI(Shared peripheral interrupt)。
    SGI: SGI为软件可以触发的中断,统一编号为0~15,用于各个core之间的通信。
    PPI: PPI为每个 core 的私有外设中断,统一编号为 16-31 。例如每个 CPU 的 local timer 即 Arch Timer 产生的中断就是通过 PPI 发送给 CPU 的(安全为29,非安全为30)。
    SPI: SPI 是系统的外设产生的中断,为各个 core 公用的中断,统一编号为 32~1019 ,如 global timer 、uart 、gpio 产生的中断。

    Gicv3架构
    gicv3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。。
    这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。
    一、中断线的映射
    当gic架构,使用gicv3后,中断的传递,和gicv2有所区别。
    gicv3中,将cpu interface从gic中抽离,放入到了cpu中,cpu interface通过gic stream接口,与gic进行通信。
    当gic要发送中断,gic通过gic stream接口,给cpu interface发送中断命令,cpu interface收到中断命令后,根据中断线映射配置,决定是通过IRQ还是FIQ管脚,向cpu发送中断。
    而中断线映射配置,要根据中断的分组以及当前cpu所处的EL以及seucre状态,来决定。
    二、2种安全状态中断线映射
    当gic支持2种安全状态,EL3是AArch64和AArch32,映射情况不同
    1、EL3是AArch64
    当EL3是AArch64时,映射如下:
    在这里插入图片描述
    对于group0中断,中断线均映射到FIQ
    对于group1安全中断,secure EL1或EL0,中断线映射到IRQ,其他EL映射到FIQ
    对于group1非安全中断,secure EL1或EL0以及EL3,中断线映射到FIQ,其他EL映射到IRQ
    2、EL3是AArch32
    当EL3是AArch32时,映射如下:
    在这里插入图片描述
    对于group0中断,中断线均映射到FIQ
    对于group1安全中断,secure EL0和EL3,中断线映射到IRQ,其余EL映射到FIQ
    对于group1非安全中断,secure EL0和EL3,中断线映射到FIQ,其余EL映射到IRQ
    三、1种安全状态中断线映射
    映射如下:
    在这里插入图片描述
    group0中断线,直接映射到FIQ
    group1中断线,直接映射到IRQ

    展开全文
  • 51定时器中断控制流水灯

    千次阅读 2021-01-01 15:34:11
    1、完成读取定时器溢出标志控制流水灯 2、完成定时器中断服务函数控制流水灯 三、实验原理 只用一个定时器: 定时器级联: 四、实验电路与程序 1、软件实验一:读取定时器溢出标志控制流水灯。 1)实验...
  • 中断允许寄存器IE、IE2和INT_CLKO IE:中断允许寄存器(可位寻址) SFR name bit B7 B6 ...其次还受各中断源自己的中断允许控制位控制。 ELVD:低压检测中断允许位,ELVD=1,允许低压检测中断,
  • STM32之中断控制LED灯

    2021-11-03 13:31:27
    文章目录前言一、中断1. 中断地址2. 中断优先级3. 中断响应过程二、新建工程三、编写代码参考资料 前言 一、中断 ...NVIC控制器可以帮我们找到中断的地址 2. 中断优先级 优先级在中断里是一个非常重要的
  • EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的20个中断/事件线。 每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个...
  • 微机实验二之 8259中断控制实验

    千次阅读 多人点赞 2021-06-25 16:06:22
    实验内容 1、利用系统总线上中断请求...在Intel 386EX芯片中集成有中断控制单元,该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作...
  • EA:CPU的总中断允许控制位,EA=1时,CPU开放中断(允许中断的发生),EA=0时,屏蔽所有的中断申请。同理以下其他允许位,置1时开放对应中断,置0时屏蔽对应中断。 ELVD:电压检测中断允许位 EADC:A/D转换中断允许...
  • 用外部中断EXTI的方式控制LED灯EXTI简介EXTI 功能框图中断线路流程(红色虚线)编号 1 是输入线编号 2 是一个边沿检测电路编号 3 电路实际就是一个或门电路编号 4 电路是一个与门电路编号 5 是将 EXTI_PR 寄存器内容...
  • //用LED数码管显示计数器T0的计数值#include //包含51...//将S定义为P3.2引脚unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表unsigned char x;/*************************...
  • 中断系统

    2021-01-19 21:49:11
    (1)中断概念:CPU正在执行一个事件,然后响应中断源的请求,进而去执行另外一件事,执行...1、中断允许寄存器IE中的中断允许位要允许。 EX0(IE.0),外部中断0允许; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2
  • 51单片机中断系统程序实例 (STC89C52RC)51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。中断优先级是可以给要做的事情排序。...
  • 定时器0中断控制LED秒闪

    千次阅读 2021-10-16 12:15:30
    使用定时器0中断控制LED亮0.5秒,灭0.5秒。 #include <reg52.h> sbit LED=P2^0; unsigned int time; void timer0init() { TMOD=0x01; ET0=1; EA=1; TR0=1; TH0=(65536-50000)/256; TL0=(65536-50000)...
  • 一、概述 • 中断概念是50年代中期提出的,在这以前,计算机虽然能自动运行程序,但有两个问题不能很好解决: 不能自动处理异常情况或特殊请求,如电源掉电等。...3.实时控制需要 二、基本概念 1. 定义
  • 单片机中断的相关寄存器

    千次阅读 2021-06-09 18:24:20
    1、定时器控制寄存器(TCON) TCON(88H) 地址8FH8EH 8DH8CH8BH 8AH89H88H 符号TF1TR1 TF0TR0IE1 IT1IE0IT0 TF1:定时器/计时器T1的溢出中断请求标志。当计数器T1最高产生溢出时,由...
  • 中断允许寄存器IE(0:禁止中断;1:使能中断) 定时/计数器中断控制寄存器TCON寄存器 TF1:定时/计数器T1溢出中断请求标志(0:无中断请求;1:有中断请求) TR1::定时/计数器T1启动(0:停止:定时/计数器;1:...
  • 3)通过按键 S1 产生外部中断改变 LED1\LED2\LED3 状态 2、实验设备 硬件:1、PC机一台;2、ZigBee(CC2530)(底板、核心板、仿真器、USB 线)开发板一套 软件:Windows 10系统,IAR for 8051 集成开发环境 3、实验...
  • 51单片机--外部中断1控制led亮灭

    千次阅读 2021-09-11 14:58:44
    #include "reg51.h" ...//打开INT1的中断允许。 EA=1;//打开中断 } void main() { Int1Init(); while(1); } void Int1() interrupt 0 { delay(1000);//按键的软件消抖 if(k4==0) { led1=~led1; } }
  • 1.软件及工程环境搭建 ...2.按键key中断控制led灯 了解一下中断处理过程 中断处理过程:异常(中断中断源–>允许中断–>申请中断–> CPU 响应–>保护现场(栈)–> 跳转处理–>
  • 定时器中断控制led灯闪烁

    千次阅读 2021-01-14 16:27:11
    定时器 stm32为我们提供了8个定时器,分为:通用是定时器(TIM2~TIM5),高级... **使用定时器中断实现:5s一次红灯,10s一次绿灯。 定时器初始化(库函数): 其中Tclk为PSC时钟也就是定时器还未分频时的时钟,一
  • 8086中断控制器8259A

    2021-05-24 18:19:35
    可编程中断控制器,用于可屏蔽中断管理。 单片8259A可管理8个外边中断源,通过级联,最多可以管理64个外部中断源。 中断请求寄存器IRR 保存8条外界中断请求信号IR0~IR7的请求状态,Di为1表示IRi引脚有中断请求...
  • 判断当前处理机是否允许中断和该中断源是否被屏蔽 优先权排队 处理机执行完当前指令或当前指令无法执行完,则立即停止当前程序,保护断点地址和处理机当前状态,转入相应的中断服务程序 执行中断服务程序 恢复被保护...
  • 外部中断一般是由计算机外设发出的中断请指求,如:键盘中断、打印机中断、定时器中断等。外部中断一般指io高低电平来触发并响应io中断函数 定时器中断 定时器中断是指计数器在晶振的震荡下一直加数一直加到一定...
  • 微机接口技术之中断控制芯片8259A 主要内容为8259A的功能,内部结构和工作方式.
  • 这里写目录标题数据传送方式中断传送方式非屏蔽中断中断过程中断指令中断向...非屏蔽中断不受中断允许标志IF的屏蔽,系统中只能有一个非屏蔽中断,其中断类型号为2。 中断过程 PUSH (FLAGS) IF<-0 TF<-0 AC
  • 51单片机中断

    千次阅读 多人点赞 2021-01-27 23:59:10
    51单片机中断51单片机中断原理中断的概念:中断作用中断源及相关寄存器中断源及优先级定时器/计数器控制寄存器 TCON中断允许寄存器 IE中断优先寄存器 IP工作方式寄存器TMOD定时器初值寄存器THx 和 TLx计数器初值的...
  • } } 4、main()函数 打开中断允许外部中断0。在下习惯上让主函数保持尽量的简洁,所以将细节全写在相关函数里了。 int main() { EX0=1; EA=1; while(1) { Multi_Display(); } return 0; } 5、中断函数 ...
  • 51单片机中断

    2021-08-25 20:23:55
    1.原理: 1.中断:当中央处理机 CPU 正在处理某件事的时候外界发生了...3.与中断相关的寄存器:IE(中断允许控制寄存器)、TCON(控制寄存器)、IP(中断优先级控制寄存器) SCON(串行口控制寄存器)、TMOD(定时器/计数器模

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 214,948
精华内容 85,979
关键字:

中断允许总控制位