AAAAA改变F28335中断优先级方法

AAAAA改变F28335中断优先级方法
AAAAA改变F28335中断优先级方法

改变F28335中断优先级方法

PIE中断向量表如下所示:

一共分为12个组INT1~INT12优先级由高到低依次下降,每个组内又分为8路,如INT1.1~INT1.8,假设当INT1.1与INT1.8两个中断同时出现,CPU首先响应INT1.1。

软件更改中断优先级的方法如下:

替换原文件的DSP2833x_DefaultIsr.c,DSP2833x_PieVect.c为DSP2833x_SWPrioritizedDefaultIsr.c,和DSP2833x_SWPrioritizedPieVect.c。然后添加头文件:DSP2833x_SWPrioritizedIsrLevels.h,新工程如下:

在DSP2833x_SWPrioritizedIsrLevels.h头文件中,更改优先级:

组间优先级设定部分代码:1~16优先级依次降低

组内优先级设定部分代码:1~8优先级依次降低

组内中断优先级更改实验:

取第三组中断EPWM1和EPWM3做比较,假设1的优先级高与3的优先级,这里设定EPWM_INT的优先级为1,EPWM3_INT优先级为6,设置如下:

如果在EPWM3中断函数中加while(1)死循环,则当EPWM1中断函数中加断点的时候,程序运行后会一直停留在EPWM1中断函数中,即EPWM1的中断服务程序可以打断EPWM3的中断服务程序,证明EPWM1的优先级高于EPWM3的优先级。如果EPWM1断点被取消,则程序一直会运行在EPWM3中的死循环内

不加断点:

颠倒EPWM1与EPWM3中断优先级实验同理,结果恰好相反,说明与理论猜测相同,更改组内中断优先级有效。

组间中断优先级更改实验:

取1组定时器0中断与3组EPWM1中断做比较,假设定时器0中断优先级高于EPWM1,这里设定定时器0所在的Group1的优先级为1,EPWM1所在的Group3的优先级为8如下图

测试方法和组内相同,如果在EPWM1中断函数中加while(1)死循环,则当定时器0中断函数中加断点的时候,程序运行后会一直停留在定时器0中断函数中,如果定时器0断点被取消,则程序一直会运行在EPWM1中的死循环内。

不加断点:

颠倒定时器0与EPWM1优先级实验同理,结果恰好相反,说明与理论猜测相同,更改组间中断优先级有效。

中断管理函数

中断管理函数 CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有76个中断,包括16个内核中断和60个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这60个可屏蔽中断,所以我们就只针对这60个可屏蔽中断进行介绍。 在MDK内,与NVIC相关的寄存器,MDK为其定义了如下的结构体: typedef struct { vu32 ISER[2]; u32 RESERVED0[30]; vu32 ICER[2]; u32 RSERVED1[30]; vu32 ISPR[2]; u32 RESERVED2[30]; vu32 ICPR[2]; u32 RESERVED3[30]; vu32 IABR[2]; u32 RESERVED4[62]; vu32 IPR[15]; } NVIC_TypeDef; STM32的中断在这些寄存器的控制下有序的执行的。了解这些中断寄存器,你才能方便的使用STM32的中断。下面重点介绍这几个寄存器: ISER[2]:ISER全称是:Interrupt Set-Enable Registers,这是一个中断使能寄存器组。上面说了STM32的可屏蔽中断只有60个,这里用了2个32位的寄存器,总共可以表示64个中断。而STM32只用了其中的前60位。ISER[0]的

bit0~bit31分别对应中断0~31。ISER[1]的bit0~27对应中断32~59;这样总共60个中断就分别对应上了。你要使能某个中断,必须设置相应的ISER位为1,使该中断被使能(这里仅仅是使能,还要配合中断分组、屏蔽、IO口映射等设置才算是一个完整的中断设置)。具体每一位对应哪个中断,请参考 stm32f10x_nvic..h里面的第36行处。 ICER[2]:全称是:Interrupt Clear-Enable Registers,是一个中断除能寄存器组。该寄存器组与ISER的作用恰好相反,是用来清除某个中断的使能的。其对应位的功能,也和ICER一样。这里要专门设置一个ICER来清除中断位,而不是向ISER写0来清除,是因为NVIC的这些寄存器都是写1有效的,写0是无效的。具体为什么这么设计,请看《CM3权威指南》第125页,NVIC概览一章。 ISPR[2]:全称是:Interrupt Set-Pending Registers,是一个中断挂起控制寄存器组。每个位对应的中断和ISER是一样的。通过置1,可以将正在进行的中断挂起,而执行同级或更高级别的中断。写0是无效的。 ICPR[2]:全称是:Interrupt Clear-Pending Registers,是一个中断解挂控制寄存器组。其作用与ISPR相反,对应位也和ISER是一样的。通过设置1,可以将挂起的中断接挂。写0无效。 IABR[2]:全称是:Active Bit Registers,是一个中断激活标志位寄存器组。对应位所代表的中断和ISER一样,如果为1,则表示该位所对应的中断正在被执行。这是一个只读寄存器,通过它可以知道当前在执行的中断是哪一个。在中断执行完了由硬件自动清零。 IPR[15]:全称是:Interrupt Priority Registers,是一个中断优先级控制的寄存器组。这个寄存器组相当重要!STM32的中断分组与这个寄存器组密切相关。IPR寄存器组由15个32bit的寄存器组成,每个可屏蔽中断占用8bit,这样总共可以表示15*4=60个可屏蔽中断。刚好和STM32的可屏蔽中断数相等。IPR[0]的[31~24],[23~16],[15~8],[7~0]分别对应中中断3~0,依次类推,总共对应60个外部中断。而每个可屏蔽中断占用的8bit并没有全部使用,而是只用了高4位。这4位,又分为抢占优先级和子优先级。抢占优先级在前,子优先级在后。而这两个优先级各占几个位又要根据SCB->AIRCR中中断分组的设置来决定。 这里简单介绍一下STM32的中断分组:STM32将中断分为5个组,组0~4。该分组的设置是由SCB->AIRCR寄存器的bit10~8来定义的。具体的分配关系如下表所示:

易错试题

单片机应用习题 一.选择题 1.若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为 ( C )。 A.500 B.1000 C.216-500 D.216-1000 2.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到( D )引脚。 A.P3.2 B.P3.3 C.P3.4 D.P3.5 3.当外部中断请求的信号方式为脉冲方式时,要求中断请求信号的高电平状态和低电平状态都应至少维持( A )。 A.1个机器周期 B.2个机器周期 C.4个机器周期 D.10个晶振周期 4.定时器若工作在循环定时或循环计数场合,应选用( C )。 A.工作方式0 B.工作方式1 C.工作方式2 D.工作方式3 5.串行口每一次传送( A )字符。 A.1个 B.1串 C.1帧 D.1波特 6. 单片机应用程序一般存放在( B ) a)RAM b)ROM c)寄存器 d)CPU 7. .8031单片机中既可位寻址又可字节寻址的单元是( A) a)20H b)30H c)00H d)70H 8. 、在串行通信中, 8031中发送和接收的寄存器是( B) 。 A.TMOD B. SBUF C. SCON D. DPTR 9. 波特的单位是(B) A. 字符/秒 B. 位/秒 C. 帧/秒 D. 字节/秒 10. 存储器的地址范围是0000H~0FFFH,它的容量为( D )。 (A)1KB (B) 2KB (C) 3KB (D) 4KB 11. MCS-51的相对转移指令的最大负跳变距离(B ) A.2KB B. 128B C. 127B D. 256B 12. 某种存储器芯片是8KB*4/片,那么它的地址线根数是( C ) A.11根 B.12根 C. 13根 D. 14根 13. 关于MCS-51的堆栈操作,正确的说法是( C ) A.先入栈,再修改栈指针 B.先修改栈指针,再出栈 C. 先修改栈指针,在入栈 D.以上都不对 14 .PC中存放的是( A ) A.下一条指令的地址 B. 当前正在执行的指令 C.当前正在执行指令的地址 D.下一条要执行的指令 15. 控制串行口工作方式的寄存器是( C ) A.TCON B.PCON C.SCON D.TMOD 16. MCS-51上电复位后,SP的内容应为( B ) A.00H B.07H C.60H D.70H 17. 使用8255可以扩展出的I/O口线是(B) (A)16根(B)24根(C)22根(D)32根

实验四单片机中断优先级实验

实验四单片机中断优先级实验 一、实验目的 1.理解AT89C51单片机中断优先级和优先权。 2.用PROTEUS设计、仿真基于AT89C51单片机的中断优先级实验。 3.掌握中断编程。 4.掌握发光二极管的控制方法。 二、实验要求 单片机主程序控制P0口数码管循环显示0~8;外中断(INT0)、外中断(INT1)发生时分别在P2、P1口依次显示0~8;INT1为高优先级,INT0为低优先级。 三、电路设计 1.从 ① ②RES、 ③ ④CAP、CAP-ELEC:电容、电解电容; ⑤CRYSTAL:晶振; ⑥BUTTON:按钮。 2.放置元器件 3.放置电源和地 4.连线 5.元器件属性设置 6.电气检测 四、源程序设计、生成目标代码文件 1.流程图 2.源程序设计

通过菜单“source→Add/Remove Source Files…”新建源程序文件:。 通过菜单“source→”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。 程序编辑好后,单击按钮存入文件。 3.源程序编译汇编、生成目标代码文件 通过菜单“source→Build All”编译汇编源程序,生成目标代码文件。若编译失败,可对程序进行修改调试直至汇编成功。 五、PROTEUS仿真 1.加载目标代码文件 2.全速仿真 单击按钮,启动仿真。 (1)低优先级INT0中断主程序:当主程序运行时,单片机控制与P0口相接的数码管循环显示1~8;而P1、P2口的数码管不显示。当前主程序控制P0口显示“8”的时刻单击“低优先级输入”按钮,触发INT0如图所示,INT0服务程序控制P2口依次显示1~8,当前显示“2”。 (2)高优先级INT1中断低优先级INT0;在上一步的基础上,即主程序被INT0中断在P0口输出“8”,而在INT0服务程序在P2口输出“2”的时刻,单击“高优先级输入”按钮,触发高优先级INT1,所在INT0被中断在显示“2”,INT1服务程序控制P1口依次显示1~8。

设计带屏蔽中断优先级排队电路

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊1. 设计题目 设计带中断屏蔽位的中断优先权排队带电路。 2.设计目的 1.对已学过的组成原理知识知识进行综合运用。 2.能按要求设计出具有一定功能的逻辑电路。 3.设计任务 1、已知在多级中断中,每一级均有一根中断请求线送往CUP的中断优 先级排队电路,对每一级赋予了不同的优先级。这是一种独立请求的逻辑结构。 2、而且中断请求信号保存在中断请求寄存器当中,经过“中断屏蔽” 寄存器控制后,可能有多个请求信号进入排队电路。而排队电路就可以根据事先设计好的逻辑电路判断那个设备的优先级最高,从而响应该设备的中断请求。 2、利用Quartus II完成电路图的绘制,选择合适的逻辑电路和芯片。 3、对所设计的电路分析其性能优劣,并与所熟悉的其他电路做比较, 总结各自优缺点,利用软件进行仿真。 4.设计分析 因为在该电路要用到充当中断请求的寄存器,充当中断屏蔽的寄存器以及响应符合获得中断请求的设备的译码器。所以首先要选择以上芯片。 通过以前学习数字逻辑的知识可知道,可以使用两个74163二进制寄存器充当中断请求寄存器和中断请求屏蔽器,而是用74148-3-8译码器做为该 电路中的译码器。 5. 设计过程 5.1 设计原理 图1- 设计原理图 译码器 中断请求寄存器中断屏蔽寄存器

┊┊┊┊┊┊┊┊┊┊┊┊┊ 装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 图2- 74163二进制寄存器逻辑符号图 表1- 74163二进制寄存器功能表 由上面图1和表1可知,要使中断寄存器与中断屏蔽器同步置数,CR=1,LD=0,ET和EP悬空,同时给一个CP一个高电位。 D0 D1 D2 D3 ET 74163 EP LD CP CR Q0 Q1 Q2 Q3 模16加法计数 1 1 1 1 ↑ 保持,CO=0 1 1 1 × 保持 1 1 1 × 同步置数 × × 1 ↑ 同步清0 × × × ↑ 功能 EP ET LD /CR CP

第三章复习题

1.什么是中断和中断系统?其主要功能是什么?1.解:当CPU正在处理某件事情的时候,外部发生的某一事件请求CPU迅速去处理, CPU 暂时中止当前的工作,转去处理所发生的事件,处理完该事件以后,再回到原来被中止的地方,继续原来的工作。这种过程为中断,实现这种服务的部件称为中断系统。 功能:①实时处理,能对外界异步发生的事件作出及时的处理。②完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。③实现实时控制。 2.什么是是中断优先级?中断优先级处理的原则是什么?2.解:中断优先级是CPU响应中断的先后顺序。中断优先处理的原则是: (1)先响应优先级高的中断请求,再响应优先级低的中断请求。 (2)如果一个中断请求己被响应,同级的其他中断请求将被禁止。 (3)如果同级的多个中断请求同时出现,CPU则按单片机内部的自然优先级顺序响应各中断请求。 单片机内部自然优先级顺序(由高到低)为: 外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断。 3.8051有几个中断优先级?如何对各中断请求进行控制?3.解:(1)80C51有以下中断源: ①外部中断0()请求,低电平有效。 ②外部中断1()请求,低电平有效。 ③ T0:定时器/计数器0溢出中断请求。 ④ T1:定时器/计数器1溢出中断请求。 ⑤ TI/RI:串行接口中断请求。 (2)通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现对各种中断的控制功能。 4.简述MCS51单片机的中断响应过程。4.解:单片机一旦响应中断请求, 就由硬件完成以下功能: (1)根据响应的中断源的中断优先级, 使相应的优先级状态触发器置1; (2)执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源; (3)清除相应的中断请求标志位(串行口中断请求标志RI和TI除外); (4)把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序。 (5)中断返回,程序返回断点处继续执行。 5.8051怎么管理中断?怎样开放和禁止中断?怎么设置优先级?5.解:(1)由中断源提出中断请求,由中断控制允许控制决定是否响应中断,如果允许响应中断,则CPU按设定好的优先级的顺序响应中断。如果是同一优先级的中断,则按单片机内部的自然优先级顺序(外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断)响应中断。 CPU响应中断请求后,就立即转入执行中断服务程序。保护断点、寻找中断源、中断处理、中断返回,程序返回断点处继续执行。(2)由中断允许寄存器IE控制开放和禁止中断。欲开放某一中断,则应先开放总中断允许(EA置1),然后开放相应中断的中断允许(相应位置1);若要要禁止中断,则EA置O即可。 (3)由中断优先级控制寄存器IP控制中断优先级,相应位置1,则设为高级中断,置0则为低级。其中:PS为串行中断优先级,PTl(0)为定时中断1(0)优先级,PXl(0)外部中断1(0)优先级。 6.8051在什么条件下可响应中断?6.解:(1)有中断源发出中断请求。 (2)中断总允许控制位EA=l, CPU开放总中断。 (3)申请中断的中断源的中断允许位为1,即该中断没有被屏蔽。 (4)无同级或更高级中断正在服务。 (5)当前指令周期已经结束。(6)若现行指令为RETI或访问IE或IP指令时,读指令以及紧接着的另一条指令已执行完毕。 满足以上条件,则CPU响应响应中断元的中断请求。 7.请写出为低电平/边沿触发的中断系统初始化程序。 7.解:ORG 0000H LJMP MAIN ORG 0013H LJMP INT1 ORG 0030H MAIN: SETB EA SETB EX1 SETB PX1 CLR IT1 JMP $ INT1: RETI END 8.说明MCS-51单片机响应中断后,中断服务的入口地址。8.解:中断服务程序的入口地址如下表: 中断源中断矢量 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H 9.8051单片机外部中断源有几种触发中断请求的方法?如何实现中断请求?9.解:有两种方式:电平触发和边沿触发。 (1)电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输人电平。若为低电平,便置IEl(IEO)为“1” ,申请中断;若外部中断引脚为高电平,则IEl(IEO)清零。 (2)边沿触发方式:CPU在每个机器周期的S5P2期间采样外部中断请求引脚的输人电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高电平,接着下一个机器周期采样到外部中断请求为低电平,则使IEl(IEO)置1,申请中断;否则,IEl(1E0)置0。 10.8051单片机内部有几个定时器/计数器?它们是由哪些特殊功能寄存器组成? 10.解:80C51单片机片内设有2个定时器/计数器:定时器/计数器T0和定时器/计数器T1,T0由TH0、TL0组成,T1由TH1、TLl组成。T0、T1由特殊功能寄存器TMOD、TCON控制。 11.8051单片机定时器/计数器作定时和计数使用时,其计数脉冲分别由谁提供? 11.解:作定时器时,计数脉冲来自单片机内部,是由单片机晶振经过12分频后获得的脉冲。作为计数器时,计数脉冲来自单片机的外部,即T0与T1两个引用的输入脉冲。 12.定时器/计数器的4种工作方式个有何特点?如何选择设定? 12.解:(1) 工作方式O: 13位定时器/计数器工作方式。 工作方式0由TH0的全部8位和TL0的低5位构成13位加1计数器,此时TL0的高3位未用。在计数过程中,当TL0的低5位溢出时,都会向TH0进位,而全部13位计数器溢出时,则计数器溢出标志位TF0置位。 (2) 工作方式l: 16位的定时器/计数器方式。 工作方式1由TH0作为高8位,TL0为低8位,在计数过程中,当全部16位计数器溢出时,则计数器溢出标志位TF0置位。 (3) 工作方式2: 自动重新装入计数初值的8位定时器/计数器工作方式。 工作方式2的16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。定时器/计数器启动后,TL0按8位加1计数器计数,当TL0计数溢出时,置位TF0的同时又从预置寄存器TH0中重新获得计数初值并启动计

STM32外部中断以及中断优先级

外部中断的初始化过程: 1.初始化IO为输入(可以设置上拉,下拉,浮空) 2.开启IO复用时钟 3.开启与该IO相对的线上(详解下) 4.配置NVIC,使能中断 5.编写中断服务函数 外部中断: Stm32中总共有19个外部中断 包括: 线0-15:IO输入中断(每条线上最多有7个IO,如GPIOA~GPIOG,但是每一条线每次只允许同时连接到一个IO)

线16:PVD 线17:RTC 线18:USB 关于优先级: CM3中内核支持256个中断(16个内核+240外部)和可编程256级中断优先级的设置

Stm32目前支持84个中断(16个内核+68个外部,注:不是指68个外部中断),16级可编程优先级(优先级设置寄存器中使用了4位)

注意:其中外部中断5-9和中断10-15向量存放在一起 优先级: 数值低的优先级要高于数值高的!!!!!! 上电复位后,系统默认使用的是组0; 一个系统只能使用一组优先级组,不可使用多个,优先级的设置不能超过组的范围,否则会产生不可预计的错误 1.高抢先级的中断可以打断低优先级的中断响应,构成中断嵌套 2.相同抢先级的中断不可以构成嵌套,系统会优先响应子优先级高的

3.当2(n)个相同抢先优先级和相同子优先级的中断出现,STM32首先响应中断通道所对应的中断向量地址低的那个中断 4.0号抢先优先级的中断,可以打断任何中断抢先优先级为非0号的中断;1号抢先优先级的中断,可以打断任何中断抢先优先级为2、3、4号的中断;……;构成中断嵌套。 5.所有外部中断通道的优先级控制字PRI_n也都是0,68个外部中断通道的抢先优先级都是0号,没有子优先级的区分。不会发生任何的中断嵌套行为,谁也不能打断当前正在执行的中断服务。当多个中断出现后,则看它们的中断向量地址:地址越低,中断级别越高,STM32优先响应

实验五--单片机中断优先级实验

实验五单片机中断优先级实验 一、实验目的 1.理解AT89C51单片机中断优先级和优先权。 2.用PROTEUS设计、仿真基于AT89C51单片机的中断优先级实验。 3.掌握中断编程。 4.掌握发光二极管的控制方法。 二、实验要求 单片机主程序控制P0口数码管循环显示0~8;外中断(INT0)、外中断(INT1)发生时分别在P2、P1口依次显示0~8;INT1为高优先级,INT0为低优先级。 三、电路设计 ④CAP、CAP-ELEC:电容、电解电容; ⑤CRYSTAL:晶振; ⑥BUTTON:按钮。

2.放置元器件 3.放置电源和地 4.连线 5.元器件属性设置 6.电气检测 四、源程序设计、生成目标代码文件 1.流程图 2.源程序设计 通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC35.ASM。 通过菜单“sourc e→DZC35.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。 程序编辑好后,单击按钮存入文件DZC35.ASM。 3.源程序编译汇编、生成目标代码文件 通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。若编译失败,可对程序进行修改调试直至汇编成功。 五、PROTEUS仿真 1.加载目标代码文件 2.全速仿真 单击按钮,启动仿真。 (1)低优先级INT0中断主程序:当主程序运行时,单片机控制与P0

口相接的数码管循环显示1~8;而P1、P2口的数码管不显示。当前主程序控制P0口显示“8”的时刻单击“低优先级输入”按钮,触发INT0如图所示,INT0服务程序控制P2口依次显示1~8,当前显示“2”。 (2)高优先级INT1中断低优先级INT0;在上一步的基础上,即主程序被INT0中断在P0口输出“8”,而在INT0服务程序在P2口输出“2”的时刻,单击“高优先级输入”按钮,触发高优先级INT1,所在INT0被中断在显示“2”,INT1服务程序控制P1口依次显示1~8。 3.仿真调试 六、思考题: 1.说明单片机中共有哪几种中断,它们的默认优先级是什么? 2.怎样修改中断优先级?例如在本实验中要使TIMER1成为优先级最高的中断,该怎么处理?

STM32 中断优先级理解

CM3 内核支持256 个中断,其中包含了16 个内核中断和240 个外部中断,并且具有256级的可编程中断设置。但STM32 并没有使用CM3 内核的全部东西,而是只用了它的一部分。STM32 有84 个中断,包括16 个内核中断和68 个可屏蔽中断,具有16 级可编程的中断优先级。而我们常用的就是这68 个可屏蔽中断,但是STM32 的68 个可屏蔽中断,在STM32F103 系列上面,又只有60 个 (在107 系列才有68 个)。 在MDK 内,与NVIC 相关的寄存器,MDK 为其定义了如下的结构体: 点击(此处)折叠或打开 1.typedef struct 2.{ 3.vu32 ISER[2]; 4.u32 RESERVED0[30]; 5.vu32 ICER[2]; 6.u32 RSERVED1[30]; 7.vu32 ISPR[2]; 8.u32 RESERVED2[30]; 9.vu32 ICPR[2]; 10.u32 RESERVED3[30]; 11.vu32 IABR[2]; 12.u32 RESERVED4[62]; 13.vu32 IPR[15]; 14.} NVIC_TypeDef; STM32 的中断在这些寄存器的控制下有序的执行的。只有了解这些中断寄存器,才能了解STM32 的中断。下面简要介绍这几个寄存器: ISER[2]:I SER 全称是:Interrupt Set-Enable Registers,这是一个中断使能寄存器组。上面说了STM32F103 的可屏蔽中断只有60 个,这里用了 2 个32 位的寄存器,总共可以表示64 个中断。而STM32F103 只用了其中的前60 位。ISER[0]的bit0~bit31 分别对应中断0~31。ISER[1]的bit0~27 对应中断32~59;这样总共60 个中断就分别对应上了。你要使能某个中断,必须设置相应的ISER 位为1,使该中断被使能(这里仅仅是使能,还要配合中断分组、屏蔽、IO 口映射等设置才算是一个完整的中断设置)。具体每一位对应哪个中断,请参考stm32f10x_nvic..h 里面的第36 行处。 ICER[2]:全称是:Interrupt Clear-Enable Registers,是一个中断除能寄存器组。该寄存器组与ISER 的作用恰好相反,是用来清除某个中断的使能的。其对应位的功能,也和ICER 一样。这里要专门设置一个ICER 来清除中断位,而不是 向ISER 写0 来清除,是因为NVIC 的这些寄存器都是写 1 有效的,写0 是无效的。 ISPR[2]:全称是:Interrupt Set-Pending Registers,是一个中断挂起控制寄存器组。每个位对应的中断和ISER 是一样的。通过置1,可以将正在进行的中断挂起,而执行同级或更高级别的中断。写0 是无效的。

利用中断屏蔽技术修改中断优先级

利用中断屏蔽技术修改中断优先级 摘要:在现代计算机系统中,中断系统不只是I/O系统,也是整个计算机系统必不可少的重要组成部分。中断响应的次序是固定的,中断处理的次序可以与之保持一致,也可通过修改屏蔽字来灵活地改变,文章针对三种典型的问题,提出解决思路和方法,阐述利用中断屏蔽技术修改中断优先级。 关键词:中断级屏蔽位;中断响应;中断处理 当CPU与外设交换信息时,如果采用查询的方式,则CPU要浪费很多时间去等待外设,为了解决快速CPU与慢速外设之间的矛盾,一方面提高外设的工作速度,另一方面发展了中断的概念。中断概念的出现,是计算机系统结构设计中的一个重大变革。中断是指CPU终止正在执行的程序,转去处理随机提出的请求,待处理完后,再回到原先被打断的程序继续恢复执行的过程。响应和处理各种中断的软、硬件总体称为中断系统。中断系统是整个计算机系统必不可少的重要组成部分。它对程序的监视和跟踪、人机联系、故障处理、多道程序和分时处理、实时处理、目态程序和操作系统的联系、I/O处理以及多处理机系统中各机的联系等都起着重要的作用。中断响应的次序是固定的,中断处理的次序可以与之保持一致,也可通过修改屏蔽字来灵活地改变,文章针对三种典型的问题,提出解决思路和方法,阐述利用中断屏蔽技术修改中断优先级。 1 确定中断屏蔽字 引起中断的各种事件称为中断源。在中、大型计算机系统中,中断源个数多达几十甚至几百个,为每个中断源单独形成入口,显然很困难,也没有这种必要,为简化中断处理程序入口地址形成硬件,将中断源归成几类,每一类中各中断源性质比较接近,对每一类给定一个中断处理程序入口,再由软件转入对相应的中断源进行处理。中断的特点是具有随机性,常常会同时发生多个中断请求,为解决这个问题,需要根据中断的性质、紧迫性、重要性以及软件处理的方便性把中断分成不同的级别,按照优先次序进行响应和处理。在现代计算机系统中,中断优先级一般是由硬件的排队器实现的,因此,当有多个中断源同时请求中断服务时,中断响应次序的高低是固定死的。处理机在执行某一个级别的中断源的中断服务程序时,较之同级的或低级的中断请求不能中断其处理,只有较之高级的中断请求可以中断其处理。为了能由操作系统灵活改变实际的中断处理次序,设置了中断级屏蔽位寄存器,以决定某级中断请求能否进入中断响应排队器,只有能进入排队器的中断请求,才有机会得到响应,从而就可改变中断实际处理完的次序,PSW中包含有中断级屏蔽位字段。因此,引出了第一种典型的问题:给定中断响应次序和希望的中断处理次序,怎么确定各级中断的屏蔽字,方法是:某级中断的屏蔽字中,自身及处理次序较之低的各级中断需要屏蔽。需要特别注意的是,有关中断级屏蔽位“0”、“1”是屏蔽还是“开放”中断,不同机器有着不同的定义,不要将“0”、“1”的含义搞反了。现举例说明,假设机器有5级中断,中断响应优先次序为1→2→3→4→5,令”0”对应于屏蔽,“1”对应于开放,若希望中断处理次序也为1→2→3→4→5,则只需将各级中断处理程序的中断级屏蔽位设置成如表1所示的即可。

单片机简答题

简答题: 1.MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少? 答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。 2.已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤) 答:定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是1388H TMOD的值是00000001B,TH0=13H;TL0=88H。 3.MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。 答:MCS51系列单片机上有1个8位CPU、128B的RAM、21个SFR、4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM;8051内有4KB的掩膜ROM;8751内有4KB的EPROM。 1.如何正确使用P3口? 1.要点: (1)说明P3口有第一功能和第二功能的使用。 (2)P3口的第二功能各位线的含义。 (3)使用时应先按需要选用第二功能信号,剩下的口线才作第一功能I/O线用。 (4)读引脚数据时,必需先给锁存器输出“1”。 2.简述累加器的ACC的作用。 2.(1)8位专用寄存器。 (2)运算时存放一个操作数。 (3)运算后存放运算结果,所以称它为累加器。 3.简述寄存器间接寻址方式及其寻址范围。 3.(1)寄存器中存放的是操作数的地址,操作数是通过寄存器间接得到,这种寻址方式称为寄存器间接寻址方式。 (2)寻址范围: ①内部RAM低128单位,形式@Ri(i=0,1)。 ②外部RAM64K使用DPTR作间址寄存器,形式为@DPTR。 4.简述MCS-51单片机的中断入口地址。 4.中断入口地址为中断响应后PC的内容即中断服务的入口地址。 它们是:外部中断0 0003H 定时器T0中断000BH 外部中断1 0013H 定时器T1中断001BH 串行口中断0023H 5.简述串行数据传送的特点。 5.(1)传送按位顺序进行,速度慢。

单片机原理课后习题整理1.0

第1章思考题及习题1参考答案 一、填空 1. 除了单片机这一名称之外,单片机还可称为或。答:微控制器,嵌入式 控制器. 3. AT89S52单片机工作频率上限为 MHz。答:33 MHz。 三、判断对错 1. STC系列单片机是8051内核的单片机。对 2. AT89S52与AT89S51相比,片内多出了4KB的Flash程序存储器、128B的RAM、1个中断 源、1个定时器(且具有捕捉功能)。对 3. 单片机是一种CPU。错 4. AT89S52单片机是微处理器。错 5. AT89C52片内的Flash程序存储器可在线写入,而AT89S52则不能。错 6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。对 7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。对 8. 单片机的功能侧重于测量和控制,而复杂的数字信号处理运算及高速的测控功能则是DSP 的长处。对 四、简答 4. 解释什么是单片机的在系统编程(ISP)与在线应用编程(IAP)。 答:单片机的在系统编程ISP(In System Program),也称在线编程,只需一条与PC机USB口或串口相连的ISP下载线,就可把仿真调试通过的程序代码从PC机在线写入单片机的Flash存储器内,省去了编程器。在线应用编程(IAP)就是可将单片机的闪存内的应用程序在线修改升级。

第2章思考题及习题2参考答案 一、填空 1. 在AT89S52单片机中,如果采用6MHz晶振,一个机器周期为。答:2μs 2. AT89S52单片机的机器周期等于个时钟振荡周期。答:12 9. AT89S52单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S52单片机的PC是16位的,因此其寻址的范围为 KB。答:64 10. AT89S52单片机复位时,P0~P3口的各引脚为电平。答:高 11. AT89S52单片机使用片外振荡器作为时钟信号时,引脚XTAL1接,引脚XTAL2的接法是。答:片外振荡器的输出信号,悬空 二、判断对错 1. 使用AT89S52单片机且引脚EA=1时,仍可外扩64KB的程序存储器。错 2. 区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端。错 3. AT89S52单片机共有32个特殊功能寄存器,它们的位都是可以用软件设置的,因此,都

简答

1.MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU 按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少? 答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。 3.MCS51系列单片机的内部资源有哪些?说出8031、8051 和8751的区别。 答:MCS51 系列单片机上有1 个8 位CPU、128B的RAM、21 个SFR、4 个并行口、1 个 串行口、2 个定时计数器和中断系统等资源。8031、8051和8751 的区别是8031内无ROM;8051 内有4KB的掩膜ROM;8751 内有4KB的EPROM。 1.如何正确使用P3 口?(1)说明P3口有第一功能和第二功能的使用。(2)P3口的第二功能各位线的含义。(3)使用时应先按需要选用第二功能信号,剩下的口线才作第一功能I/O 线用。(4)读引脚数据时,必需先给锁存器输出“1”。 2.简述累加器的ACC的作用。 (1)8位专用寄存器。(2)运算时存放一个操作数。(3)运算后存放运算结果,所以称它为累加器。 3.简述寄存器间接寻址方式及其寻址范围。 (1)寄存器中存放的是操作数的地址,操作数是通过寄存器间接得到,这种寻址方式称为寄存器间接寻址方式。 (2)寻址范围:①内部RAM 低128 单位,形式@Ri(i=0,1)。②外部RAM64K 使用DPTR作间址寄存器,形式为@DPTR。 1.单片机的特性主要有哪些? 答:单片机具有体积小、可靠性高、控制功能强、使用方便、性能价格比高、容易产品化等特点。 2.8031、8051、8751有何异同? 答:8051、8751 和8031均为8 位单片机,其内部结构是基本相同的。

中断系统及中断优先级实验

中断系统及中断优先级实验 1.实验目的 1)扩展八个发光二极管 2)用2个按键模拟外部中断源 3)案件独立模拟中断 4)中断优先级控制 2.实验设备 1)Usb通讯线 2)CH340usb接口模块 3)74hc245 4)74hc138 5)排阻4.7k9脚 6)排阻4.7k5脚 7)300R色环电阻 8)1k色环电阻 9)三极管9012 10)led 二极管 11)陶瓷电容20pf 12)晶振11.059mhz 13)按键开关 14)万能板 15)stc89c51rc 16)焊锡 17)电烙铁 18)万能表 19)计算机 3.实验要求 1)画出电路原理图 2)用protues画出仿真图 3)根据硬件连接设计程序流程图 4)用keil软件编写程序 5)焊好板子输入程序调试完成中断优先级控制功能 4.实验原理 1、中断的概念 如果单片机没有中断功能,单片机对外部或是内部事件的处理只能采用程序查询方式,即CPU不断查询是否有事件发生。显然,采用程序查询方式,CPU不能再做别的事,而是在大部分时间处于等待状态。单片机都具有实时处理能力,能对外部或是内部发生的事件做出及时地处理,这是靠中断技术来实现的。 当CPU正在处理某件事情的时候,外部或内部发生的某一事件请求CPU迅速去处理,于是CPU暂时中止当前的工作,转去处理所发生的事件。中断服务处理程序处理完该事件后,再回到原理被中止的地方,继续原来的工作,这样的过程称为中断,如图所示。处理事件的过程称为CPU的中断响应过程。对事件的整个处理过程,称为中断服务或中断处理

实现这种功能的部件称为中断系统,产生中断的请求源称为中断源。中断源向CPU提出的处理请求,称为中断请求或中断申请。CPU暂时中止执行的程序,转去执行中断服务程序,除了硬件会自动把断点地址PC值压入堆栈之外,用户还得注意保护有关的工作寄存器、累加器、标志位等信息,这称为现场保护。最后执行中断返回指令,从堆栈中自动弹出断点地址到PC,继续执行被中断的程序,这称为中断返回。 2、MCS-51中断系统的结构 单片机的中断系统有5个中断请求源,具有两个中断优先级,可实现两级中断服务程序嵌套。用户可以用软件来屏蔽所有的中断请求,也可以用软件使CPU接受中断请求;每一个中断源可以用软件独立地控制为开中断或是关中断状态;每一个中断源中的中断级别均可用软件来设置。下图为中断系统结构图。 3、中断请求源 中断系统共有五个中断请求源它们是: 1)INT0 外部中断0请求,由INT0引脚输入,中断请求标志为IE0。 2)INT1 外部中断1请求,由INT1引脚输入,中断请求标志为IE1。 3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。 4)定时器/计数器T1 溢出中断请求,中断请求标志为TF1。 5)串口中断

第5章中断系统课后习题答案

第5章中断系统 1)作业题 1.8051微控制器中,有几个中断源?几个中断优先级?中断优先级是如何控制的?在出 现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)? 各个中断源的入口地址是多少? 答:8051微控制器中有五个中断源,两个中断优先级。通过IP进行优先级控制。IP为中断优先级寄存器,物理地址为B8H,其中的后五位PS PT1 PX1 PT0 PX0分别控制串行口、定时器/计数器1、外部中断1、定时器/计数器0、外部中断0的优先级。在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串行口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。 2.8051微控制器中,各中断标志是如何产生的,又如何清0的? 答:每个中断源请求中断时会在SFR的某些寄存器中产生响应的标志位,表示该中断源请求了中断。INT0、INT1、T0和T1的中断标志存放在TCON(定时器/计数器控制寄存器)中,占4位;串行口的中断标志存放在SCON(串行口控制寄存器)中,占2位。 TF0:T0溢出标志,溢出时由硬件置1,并且请求中断,CPU响应后,由硬件自动将TF0清0;不用中断方式时,要用软件清0。 TF1:T1溢出标志,溢出时由硬件置1,并且请求中断,CPU响应后,由硬件自动将TF1清0;不用中断方式时,要用软件清0。 IE0:INT0中断标志,发生INT0中断时,硬件置IE0为1,并向CPU请求中断。 IE1:INT1中断标志,发生INT1中断时,硬件置IE1为1,并向CPU请求中断。SCON:串行口控制寄存器。 TI:串行口发送中断标志,发送完一帧数据时由硬件置位,并请求中断。 RI:串行口接受中断标志,接收到一帧数据时,由硬件置位,并且请求中断。 TI、RI标志,必须用软件清0。 3.简述8051微控制器中中断响应的过程。 答:单片机响应中断的条件:中断源有请求(响应的中断标志位置1),CPU允许所有中断(CPU中断允许位EA=1),中断允许寄存器IE中,相应中断源允许位置1;没有同级或者高级中断正在服务,现行指令已经执行完毕,若执行指令为RETI或者读/写IE或者IP指令时则该指令的下一条指令也执行完毕。 中断响应的过程: 1)CPU在每个机器周期的S5P2检测中断源。在下一个机器周期的S6按照优先次序查询各个中断标志。若查询到有中断标志为1时,按照优先级别进行处理,即响应中断;2)置相应的“优先级状态”触发器为1,即指出CPU当前正在处理的中断优先级,以阻断同级或者低级中断请求; 3)自动保护断点,即将现行PC内容(即断点地址)压入堆栈,并且根据中断源把相应的

单片机简答+编程复习题

单片机简答复习题 1.MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少? 答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。 2.已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤) 答:定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是1388H TMOD的值是00000001B,TH0=13H;TL0=88H。 3.MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。 答:MCS51系列单片机上有1个8位CPU、128B的RAM、21个SFR、4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM;8051内有4KB的掩膜ROM;8751内有4KB的EPROM。 4.如何正确使用P3口? (1)说明P3口有第一功能和第二功能的使用。 (2)P3口的第二功能各位线的含义。 (3)使用时应先按需要选用第二功能信号,剩下的口线才作第一功能I/O线用。 (4)读引脚数据时,必需先给锁存器输出“1”。 5.简述累加器的ACC的作用。 (1)8位专用寄存器。 (2)运算时存放一个操作数。 (3)运算后存放运算结果,所以称它为累加器。 6.简述寄存器间接寻址方式及其寻址范围。 (1)寄存器中存放的是操作数的地址,操作数是通过寄存器间接得到,这种寻址方式称为寄存器间接寻址方式。 (2)寻址范围: ①内部RAM低128单位,形式@Ri(i=0,1)。 ②外部RAM64K使用DPTR作间址寄存器,形式为@DPTR。 7.简述MCS-51单片机的中断入口地址。 中断入口地址为中断响应后PC的内容即中断服务的入口地址。 它们是:外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H 8.简述串行数据传送的特点。 (1)传送按位顺序进行,速度慢。 (2)传输线少,成本低。 (3)传送距离远,可达几公尺到几千公里。 9.51系列单片机具有几个中断源,分别是如何定义的?其中哪些中断源可以被定义为高优先级中断,如何定义? 答:具有5个中断源,分别是外部中断INT0和外部中断INT1、定时器溢出中断0和定时器溢出中断1以及串行中断。通过对中断优先级寄存器IP的设置,每个中断源都可以被定义为高优先级中断。

相关文档
最新文档