09 外部中断和中断控制器

合集下载

单片机的中断与异常处理方法

单片机的中断与异常处理方法

单片机的中断与异常处理方法在单片机的工作过程中,中断和异常处理是非常重要的概念和方法。

它们能够有效地提高单片机的响应能力和灵活性,使其能够应对各种不同的工作需求和问题。

本文将介绍单片机中断的概念、中断的种类以及针对不同中断的处理方法,同时也会探讨单片机异常处理的原理和方法。

一、中断的概念和种类中断是指在一个程序执行的过程中,由于某种特殊的事件发生,导致程序的正常执行被打断,转而去执行一个与当前任务无关的子程序,完成该事件的相应处理。

中断可以分为外部中断和内部中断两种。

1. 外部中断外部中断是指当单片机外部引脚的电平或信号发生变化时,引发中断事件,使单片机停止当前任务的执行,去处理由该外部事件引发的中断服务程序(ISR)。

外部中断常用于与外部设备的交互,如按键输入、传感器检测等。

在编程中,我们可以通过设置中断触发条件和编写相应的中断服务程序来实现对外部中断的处理。

2. 内部中断内部中断是指当单片机内部某个特定的事件发生时,由硬件或软件触发中断请求,并且将控制权交给中断服务程序进行相应的处理。

内部中断的发生可以是由于某个特定条件的满足,如定时器溢出中断、串口接收中断等;也可以是由软件的运行结果触发,如除法溢出中断、地址错误中断等。

不同的内部中断需要通过编程实现相应的中断服务程序。

二、中断的处理方法中断处理是指在中断发生时,单片机通过中断向量表找到相应的中断服务程序,并对中断事件进行处理的过程。

下面将介绍两种常用的中断处理方法。

1. 优先级中断处理优先级中断处理是指对多个中断源按照优先级进行划分和处理的方法。

在单片机的中断系统中,每个中断源都被赋予了一个优先级,高优先级的中断可以打断当前正在执行的低优先级中断,从而增加了中断的响应速度和灵活性。

优先级中断处理需要在编程时设置中断的优先级,并根据不同的中断事件编写相应的中断服务程序。

2. 嵌套中断处理嵌套中断处理是指当一个中断正在执行的过程中,又发生了另一个中断时,将当前中断挂起,转而处理新发生的中断,并在处理完毕后返回原中断继续执行的方法。

外部中断工作原理

外部中断工作原理

外部中断工作原理
外部中断是计算机系统中的一种中断方式,在特定的条件下,外部设备向中断控制器发送中断请求信号,然后中断控制器将该请求信号转发给处理器,让处理器暂停当前的执行任务,转而执行相应的中断服务程序。

外部中断的工作原理如下:
1. 外部设备发生中断事件:当外部设备(例如键盘、鼠标、打印机等)发生某种事件或完成某个任务时,会发送中断请求信号给中断控制器。

2. 中断请求信号传递:中断控制器接收到中断请求信号后,会将该信号的具体信息传递给处理器,通过中断引脚或总线来进行传输。

3. 处理器响应中断信号:当处理器接收到中断请求信号后,会暂停当前的执行任务,保存当前的执行现场(例如寄存器状态、指令指针等),并跳转到中断向量表中特定位置的中断服务程序。

4. 中断服务程序执行:中断服务程序是指特定的处理器指令序列,用于处理特定的中断事件。

处理器会根据中断向量表中的中断号找到对应的中断服务程序,并执行相应的操作。

5. 中断处理完成:当中断服务程序执行完毕后,处理器会恢复之前保存的执行现场,并继续执行被中断的任务,使得计算机
系统回到原来的工作状态。

总结起来,外部中断的工作原理是通过外部设备的中断请求信号,中断控制器将其传递给处理器,处理器相应地执行相应的中断服务程序,以处理特定的中断事件,最后再返回到被中断之前的任务执行。

这种方式能够使计算机系统能够快速响应外部设备的变化,提高系统的并发性和实时性能。

中断知识点总结

中断知识点总结

中断知识点总结一、中断的基本概念中断是一种计算机系统响应外部事件的机制,当外部事件发生时,CPU能够立即停止当前处理的任务,转而执行中断服务程序。

中断能够提高系统的实时响应能力,使得CPU能够在处理多任务的情况下,能够及时地响应外部事件。

中断在计算机系统中起到了非常重要的作用。

二、中断的分类1、外部中断外部中断是指由CPU外部设备发出的中断,通常包括定时中断、I/O中断等。

定时中断是由计时器或者RTC产生的中断信号,用于实现定时任务。

I/O中断是由外设发出的中断信号,用于通知CPU外设有数据需要处理。

2、内部中断内部中断是指由CPU内部产生的中断,比如除法错误中断、非法指令中断等。

这些中断是由CPU自身产生的,用于通知CPU当前指令执行出现了错误或者异常情况。

3、软中断软中断是由软件自身产生的中断,通过系统调用或者异常处理指令产生。

软中断通常用于实现系统调用和异常处理,使得软件能够以一种可控制的方式响应外部事件。

三、中断的处理流程中断的处理流程一般包括中断响应、中断处理和中断返回三个阶段。

1、中断响应当外部事件发生时,CPU能够立即停止当前任务,转而执行中断服务程序。

CPU会保存当前的程序状态,包括程序计数器、寄存器等,然后转向中断服务程序的起始地址开始执行。

2、中断处理中断服务程序执行具体的中断处理操作,比如处理外设输入输出、处理异常错误等。

中断服务程序执行完成后,CPU会回复之前保存的程序状态,然后恢复当前任务的执行。

3、中断返回中断返回是指CPU从中断服务程序返回到之前的任务中。

CPU会恢复之前被中断的任务的程序状态,然后继续执行之前被中断的指令,从而实现对中断的处理。

四、中断的实现方式1、硬件中断硬件中断是通过硬件设备产生中断信号,通常是通过中断控制器将中断信号发送给CPU。

中断控制器能够对多个外部中断进行管理,使得CPU能够正确响应外部事件。

2、软件中断软件中断是由CPU自身产生的中断,通过异常处理或者系统调用方式实现。

外部中断

外部中断

三、外部中断?
5、应用示例
5.2 /** 函数名称:main** 功能描述:P0.16 低电平触发外部中断主函数 ** 入口参数:无** 出口参数:无**/ int main (void) {PINSEL1 = PINSEL1 & (~0x03); PINSEL1 = PINSEL1 | 0x01; /* 设置P0.16 为外部中断0 管脚*/ PINSEL1 = PINSEL1 & (~(0x03 << 2)); /* 设置P0.17 为GPIO 功能*/ IO0DIR = LED; /* 设置P0.17 为输出*/IO0SET = LED; /* 设置输出为高电平*/ IRQEnable(); /* IRQ 中断使能*/ EXTMODE = 0x00; /* 设置外部中断为低电平触发*/ 外部中断
外部中断
三、外部中断?
3、应用示例
#include "config.h“ #define LED 1 << 17 /*函数名称:Eint0IRQ*功能描述:外部中断0 服务程序*入口参数:无*出口参数:无*/ void __irq Eint0IRQ(void) {if ((IO0PIN & (1 << 17)) == 0) {IO0SET = 1 << 17; /* 熄灭发光二极管*/} else {IO0CLR = 1 << 17; /* 点亮发光二极管*/} while((IO0PIN & (1 << 16)) == 0); /* 等待按键松开*/ EXTINT = 0x01; /* 清中断标志*/ VICVectAddr = 0x00; /* 通知VIC 中断处理结束*/ 外部中断

51单片机中断原理

51单片机中断原理

51单片机中断原理
单片机中断原理是指在程序运行过程中,可以通过外部信号的触发,中断当前的执行流程,转而去执行相应的中断服务程序。

其工作原理主要包括中断源、中断控制器和中断服务程序三个部分。

1. 中断源:中断源是指能够产生中断信号的外部设备或事件。

常见的中断源包括定时器溢出中断、外部中断、串口接收中断等。

当中断源发生中断事件时,会向中断控制器发送中断请求。

2. 中断控制器:中断控制器是用来管理和响应中断请求的硬件电路。

当中断请求到达时,中断控制器首先会检查当前的中断优先级,然后决定是否响应中断请求。

如果响应中断请求,中断控制器会将中断信号发送给单片机核心,告知其发生了中断事件。

3. 中断服务程序:当单片机核心接收到中断信号时,会中断当前的执行流程,转而去执行与中断源对应的中断服务程序。

中断服务程序是为了处理中断事件而编写的特定功能的程序代码。

执行完中断服务程序后,单片机核心会返回到中断发生时的原始执行位置,继续执行原来的程序。

通过中断的方式,单片机可以在进行其他任务的同时,及时响应重要的中断事件,提高系统的响应速度和实时性。

在中断服务程序中,可以实现对中断事件的处理,以满足不同应用的需求。

同时,通过合理设置中断优先级,可以确保重要的中断得到及时处理。

【优文档】微机课(外部中断)PPT

【优文档】微机课(外部中断)PPT

TEST .AS示器右边六位动态显示实时钟的时、分、秒
单元分配: 3AH:“秒”单元(BCD码);
估算:2*125*200*1µs≈50ms 【计算程序运行时间例】
3BH:“分”单元(BCD码);
3CH:“时”单元(BCD码)。 (6)只有在当前指令执行完毕后,才能进行中断响应。
DSCEOCNR(串7 行6口)控制只寄存有器 在字节当地址前为98指H。 令执行完毕后,才能进行中断响应。
MOV P1,A ;输出新控制码到P1口
5.5 中断的响应时间
在一个单一中断的系统里,AT89C51单片机对中断请求的响应 的时间一般在3~8个机器周期之间。
各中断源服务程序的入口地址:
它是各中断源的中断服务子程序的执行首地址,CPU响应
D(E5C)正R7在以执行2的4指为令不模是R加ETI或1是,访问相IE或当IP的于指令实。 现校时功能。
PUSH PSW DJNZ R7,D1S2⑦
IEX0P:PUSH ACC
;外部中断0服
务子程序。保护现场 补充5-1:编写完整的应用程序,运用外部中断功能,实现从 INT1引脚每输入2个下降沿信号令3FH单元内容按BCD码加1并且输出到P1
【例B5-3】主程序运用软件延时控制秒闪的同时实现外部中断 INT0每中断五次令一次

【例B5-4】上例基础上中断服务子程序具体代码后移的方法 )
【例B5-2】INT0每中断1次令50H单元内容加1并且输出到P1口 )
MOV A,50H ADD A,#1 DA A 按M5O0BVHC,DA 码加1
外部中断应用例:
【例B5-1】。 )
实验板INT0按键电路
【例B5-2】外部中断INT0每中断五次令一次

内部中断、外部中断、硬件中断和软件中断分析

软件中断、硬件中断、外部中断、内部中断2010-01-30 16:35:05| 分类:电子爱好者|字号订阅8086/8088把中断分为内部中断和外部中断两大类。

为了支持多任务和虚拟存储器等功能,80386把外部中断称为“中断”,把内部中断称为“异常”。

与8086/8088一样,80386通常在两条指令之间响应中断或异常。

80386最多处理256种中断或异常。

1.中断对80386而言,中断是由异步的外部事件引起的。

外部事件及中断响应与正执行的指令没有关系。

通常,中断用于指示I/O设备的一次操作已完成。

与8086/8088一样,80386有两根引脚INTR和NMI接受外部中断请求信号。

INTR接受可屏蔽中断请求。

NMI接受不可屏蔽中断请求。

在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。

外部硬件在通过INTR发出中断请求信号的同时,还要向处理器给出一个8位的中断向量。

处理器在响应可屏蔽中断请求时,读取这个由外部硬件给出的中断向量号。

处理器对这个中断向量号并没有规定。

但在具体的微机系统中,系统必须通过软件和硬件的配合设置,使得给出的这个中断向量号不仅与外部中断源对应,而且要避免中断向量号使用冲突情况的出现。

可编程中断控制器芯片8259A可配合80386工作,能够根据设置向处理器提供上述中断向量号,还能处理中断请求的优先级。

每个8259A芯片可以支持8路中断请求信号,如果使用9个8259A芯片(一个主片,8个从片),就可使80386在单个引脚INTR上接受多达64个中断源的中断请求信号。

处理器不屏蔽来自NMI的中断请求。

处理器在响应NMI中断时,不从外部硬件接收中断向量号。

与8086/8088一样,在80386中,不可屏蔽中断所对应的中断向量号固定为2。

为了不可屏蔽中断的嵌套,每当接受一个NMI中断,处理器就在内部屏蔽了再次响应NMI,这一屏蔽过程直到执行中断返回指令IRET后才结束。

09 外部中断和中断控制器介绍

3.1 概述 3.2 STM32处理器总线结构和存储器
3.3 通用I/O端口(GPIO) 3.4复位、系统时钟和定时器 3.5外部中断和中断控制器 3.6 USART串口
3.7 看门狗

向量中断控制器简称NVIC,与处理器核的接口紧密相 连。
◦ ◦ ◦ ◦ ◦ 68个可屏蔽中断通道 16个可编程的优先等级 低延迟的异常和中断处理 电源管理控制 系统控制寄存器的实现

外部中断/事件线路映射
◦ ◦ ◦ ◦
通用I/O端口连接到16个外部中断/事件线上(EXTI0~EXTI15) EXTI16连接到PVD输出 EXTI17连接到RTC闹钟事件 EXTI18连接到USB唤醒事件




在misc.h和misc.c中。 void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);//设置优先级分组 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);//初始化外设寄存器 void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);//设置向量表 的位置和偏
void EXTI_DeInit(void);//将外设EXTI寄存器重设为默认值 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);//初 始化外设EXTI寄存器 void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);// 检查指定的EXTI线路标志位设置与否 void EXTI_ClearFlag(uint32_t EXTI_Line);//清除EXTI线 路挂起标志位 ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);//检查 指定的EXTI线路触发请求发生与否 void EXTI_ClearITPendingBit(uint32_t EXTI_Line);

单片机外部中断实现

单片机外部中断实现在嵌入式系统中,单片机外部中断实现是一项非常重要的技术。

通过外部中断,可以实现单片机与外部设备的有效交互,使系统能够及时响应外部的触发信号。

本文将介绍单片机外部中断的概念、工作原理以及实现方法。

一、概念单片机外部中断是指当单片机接收到外部触发信号时,能够中断当前的执行程序,并跳转到中断服务程序中执行特定的操作。

外部中断通常由外部设备引脚的电平变化或信号触发引发,如下降沿、上升沿、高电平、低电平等。

二、工作原理外部中断的工作原理主要涉及中断源、中断请求、中断控制器和中断服务程序。

1. 中断源:中断源是指触发中断的外部设备,可以是开关、按键、传感器等。

当外部设备产生触发信号时,会引起中断请求。

2. 中断请求:中断请求是指中断源产生的信号,一般为电平变化或触发信号。

中断请求会触发中断控制器进行处理。

3. 中断控制器:中断控制器会根据中断请求的优先级和设置的中断屏蔽位,确定是否接受中断请求,并决定是否触发中断。

常见的中断控制器有外部中断控制器(例如8051中的中断0、中断1)和内部中断控制器(例如NVIC)。

4. 中断服务程序:中断服务程序是事先编写好的程序,用于处理中断事件。

当中断控制器接受到中断请求后,会跳转到对应的中断服务程序执行相应的操作。

中断服务程序需高效地完成相应的操作,然后返回到中断之前的程序位置,继续执行。

三、实现方法单片机外部中断的实现方法因芯片型号和开发环境而异,下面以常用的STM32单片机为例,介绍两种常见的外部中断实现方法。

1. EXTI外部中断:STM32单片机中,外部中断的实现依赖于外部中断线(EXTI)。

使用EXTI可以将特定GPIO引脚与中断源连接,当GPIO引脚的电平变化满足中断触发条件时,触发并处理相应的中断。

外部中断的实现步骤如下:(1)配置GPIO引脚为输入模式,设置中断触发模式(例如边沿触发模式)。

(2)配置EXTI中断线,绑定对应的GPIO引脚和中断触发源。

单片机中的中断处理机制详解

单片机中的中断处理机制详解中断是单片机系统中一种重要的事件响应机制,它可以在程序执行期间暂停当前任务,切换到执行预先定义的中断服务程序(ISR),处理发生的事件,然后再返回到原来的任务。

中断处理机制可以提高系统的响应速度,实现多任务处理和实时控制。

一、中断的分类根据中断源的不同,中断可以分为外部中断和内部中断两类。

1. 外部中断(外部触发):由单片机外部设备产生的中断请求,如按键、定时器、通信接口等。

外部中断可以通过配置中断触发方式为边沿触发或电平触发来选择中断时机。

2. 内部中断(软件触发):由单片机内部事件产生的中断请求,如定时器溢出、串口接收中断等。

内部中断由硬件自身生成,程序可以设置中断使能位和优先级,通过软件触发来使中断发生。

二、中断的执行过程1. 中断请求:当外部设备产生中断请求或者内部事件满足中断触发条件时,会使中断请求标志位置为1,通知单片机发生了中断请求。

2. 中断响应:单片机在进行指令执行过程中会不断地检测中断请求标志位。

如果中断请求标志位为1,表示有中断请求发生,单片机会立即停止当前任务的执行,保存相关寄存器的值,将中断请求标志位复位,并跳转到相应的中断服务程序(ISR)执行。

3. 中断服务程序(ISR):中断服务程序是为了响应特定中断请求而编写的一段程序代码。

ISR的功能是根据中断源的不同进行相应操作,例如读取外设状态、处理数据等。

在ISR执行过程中,一般需要关闭其他中断,以确保ISR的实时性和正确性。

执行ISR结束后,可以重新开放其他中断,供后续的中断请求使用。

4. 中断返回:ISR执行完毕后,需要通过特定的指令返回到原来的任务继续执行,通常使用“返回指令”(RET)或“中断返回指令”(RETI)完成。

在返回之前,需要恢复保存的寄存器值和标志位的状态。

三、中断优先级当多个中断同时发生时,需要根据实际应用需求设置中断的优先级。

中断优先级决定了中断的执行顺序。

1. 屏蔽优先级:每个中断源都有一个屏蔽位,可以设置为使能中断或屏蔽中断。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


固件函数库中的函数NVIC_PriorityGroupConfig()选择哪种 优先级分组方式:
◦ ◦ ◦ ◦ ◦ NVIC_PriorityGroup_0:选择第0组 NVIC_PriorityGroup_1:选择第1组 NVIC_PriorityGroup_2:选择第2组 NVIC_PriorityGroup_3:选择第3组 NVIC_PriorityGroup_4:选择第4组





void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* Enable the EXTI9_5 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable the TIM2 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);//初始化外设 EXTI寄存器 EXTI_InitTypeDef结构体定义(在stm32f10x_exti.h 中): typedef struct { uint32_t EXTI_Line; EXTIMode_TypeDef EXTI_Mode; EXTITrigger_TypeDef EXTI_Trigger; FunctionalState EXTI_LineCmd }EXTI_InitTypeDef; 举例:使能外部中断12和14 EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line12 | EXTI_Line14; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);





void EXTI_DeInit(void);//将外设EXTI寄存器重设为默认值 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);//初 始化外设EXTI寄存器 void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);// 检查指定的EXTI线路标志位设置与否 void EXTI_ClearFlag(uint32_t EXTI_Line);//清除EXTI线 路挂起标志位 ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);//检查 指定的EXTI线路触发请求发生与否 void EXTI_ClearITPendingBit(uint32_t EXTI_Line);

/*GPIO口的初始化*/ void GPIO_Configuration(void) { /* Configure PD.08 PD.09 PD.10 and PD.11 as output pushpull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOD, &GPIO_InitStructure); /* connect PA.08 with S4 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); }



void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)//设置优先级分组 { assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_Pri orityGroup)); SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup; }








产生一个软件中断 EXTI_GenerateSWInterrupt(EXTI_Line6); 检查外部中断线8的状态位 FlagStatus EXTIStatus; EXTIStatus = EXTI_GetFlagStatus(EXTI_Line8); 清除外部中断2挂起标志 EXTI_ClearFlag(EXTI_Line2); 检查外部中断8是否有中断触发 ITStatus EXTIStatus; EXTIStatus = EXTI_GetITStatus(EXTI_Line8);

外部中断/事件控制器(EXTI)的主要特征:
◦ 每个中断/事件都有独立的触发和屏蔽 ◦ 每个中断线都有专用的状态位 ◦ 支持多达19个中断/事件请求

唤醒事件管理 功能说明
◦ 可以通过处理外部或内部事件来唤醒内核(WFE) ◦ 要产生中断,事先配置好并使能中断线 ◦ 要产生事件,事先配置好并使能事件线

向量表

中断优先级------抢占式优先级和响应优先级 STM32中指定中断优先级的寄存器位为4位
◦ 第0组:所有4位用于指定响应优先级 ◦ 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优 先级 ◦ 第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优 先级 ◦ 第3组:最高3位用于指定抢占式优先级,最低2位用于指定响应优 先级 ◦ 第4组:所有4位用于指定抢占式优先级
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);//初始化 外设NVIC寄存器 typedef struct { uint8_t NVIC_IRQChannel; uint8_t NVIC_IRQChannelPreemptionPriority; uint8_t NVIC_IRQChannelSubPriority; FunctionalState NVIC_IRQChannelCmd; } NVIC_InitTypeDef; 举例:定义优先级,定义TIM3中断的优先级,抢占优先级为0, 从优先级为2 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel= TIM3_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=2; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);


STM32F10X系列芯片的每一个I/O口(共112个通 用I/O口)都可以设为外部中断口,最多可以有16 个外部中断。 另外3种外部中断/事件控制器的连接如下:
◦ EXTI线16连接到PVD输出。 ◦ EXTI线17连接到RTC闹钟事件 ◦ EXTI线18连接到USB唤醒事件
相关文档
最新文档