Stm32 IO端口及其中断
关于STM32串口空闲中断IDEL的问题

关于STM32串口空闲中断IDEL的问题1.空闲中断是接受数据后出现一个byte 的高电平(空闲)状态,就会触发空闲中断.并不是空闲就会一直中断,准确的说应该是上升沿(停止位)后一个byte,如果一直是低电平是不会触发空闲中断的(会触发break 中断)。
2.关于第二点有要铺垫的三个情况,datasheet 中”当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但如果IDLEIE 位被设置将产生一个中断”“空闲符号被视为完全由'1'组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位'1'的位数也包括了停止位的位数”空闲符号的配图后面跟这一个低电平.有人理解为只有收到下一个数据的起始位才会触发中断,这样理解是不对的,应该是数据后有空闲了一帧就会触发.3.清中断的方式感觉奇怪,使用函数USART_ClearITPendingBit( USART1,USART_IT_IDLE )清除不了中断的.我用的是3.5 的库,查看函数说明,里面的@param 参数并没有IDLE,后面的@note 中,这样说:”PE(Parity error),FE(Framingerror),NE(Noise error),ORE(OverRun error) and IDLE(Idle line detected) pendingbits are cleared by software sequence: a read operation to USART_SR register(USART_GetITStatus()) followed by a read operation to USART_DR register(USART_ReceiveData()).”我是通过语句”USART1->DR;”来清除IDLE 中断的.现在有很多数据处理都要用到不定长数据,而单片机串口的RXNE 中断一次只能接收一个字节的数据,没有缓冲区,无法接收一帧多个数据,现提供两种利用串口IDLE 空闲中断的方式接收一帧数据,方法如下:方法1:实现思路:采用STM32F103 的串口1,并配置成空闲中断IDLE 模式且使能DMA 接收,并同时设置接收缓冲区和初始化DMA。
stm32串口通信死在接收中断中的解决方法

stm32串⼝通信死在接收中断中的解决⽅法现象: 使⽤stm32f0xx系列的芯⽚,串⼝1使⽤接收中断时,当接收到⼀个数据时死在串⼝中断中,发⽣了串⼝中断溢出。
原因解释:在使⽤⼀个串⼝发数据的传感器过程中,发现程序第⼀次进⼊串⼝中断之后不再执⾏主函数的内容,中断中的内容也不执⾏。
查询⼤量资料后发现:串⼝在接收数据过多时,会出现串⼝溢出错误,并进⼊溢出中断(ORE中断)。
接下来是错误产⽣原因以及解决⽅法。
(1)什么是ORE中断?为什么会产⽣?产⽣原因如上所述。
ORE标志位在USART_SR寄存器,但值得注意的是,当我们打开串⼝接收中断时,同时也就打开了ORE中断。
(2)如何解决?看了上⾯的资料之后,我知道程序是死在了串⼝溢出中断。
处理中断时,我⾸先想到的是清除这个中断标志位,但是遇到了很多⿇烦。
解决⽅法: void USART1_IRQHandler(void){ /* 加⼊清除标志位,否则会卡死在串⼝中断服务函数中 */ uint8_t ucTemp; if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET) //检查 USART 是否发⽣中断 { USART_ClearITPendingBit(DEBUG_USARTx,USART_IT_RXNE); // 清中断标志 ucTemp=USART_ReceiveData(DEBUG_USARTx); } if(USART_GetFlagStatus(DEBUG_USARTx,USART_FLAG_ORE) == SET) // 检查 ORE 标志 { USART_ClearFlag(DEBUG_USARTx,USART_FLAG_ORE); USART_ReceiveData(DEBUG_USARTx); }}。
stm32外部中断实验报告-STM32实例外部中断实验

stm32外部中断实验报告_STM32实例外部中断实验上⼀篇⽂章我们介绍了 STM32F10x 的中断,这次我们就来学习下外部中断。
本⽂中要实现的功能与按键实验⼀样,即通过按键控制LED,只不过这⾥采⽤外部中断⽅式进⾏控制。
学习时可以参考《STM32F10x 中⽂参考⼿册》-9 中断和事件章节。
外部中断介绍EXTI 简介STM32F10x 外部中断/事件控制器(EXTI)包含多达 20 个⽤于产⽣事件/中断请求的边沿检测器。
EXTI 的每根输⼊线都可单独进⾏配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发),还可独⽴地被屏蔽。
EXTI 结构框图EXTI 框图包含了 EXTI 最核⼼内容,掌握了此框图,对 EXTI 就有⼀个全局的把握,在编程的时候思路就⾮常清晰。
从图中可以看到,有很多信号线上都有标号 9 样的“20”字样,这个表⽰在控制器内部类似的信号线路有 20 个,这与 STM32F10x 的 EXTI 总共有20 个中断/事件线是吻合的。
因此我们只需要理解其中⼀个的原理,其他的 19个线路原理都是⼀样的。
EXTI 分为两⼤部分功能,⼀个产⽣中断,另⼀个产⽣事件,这两个功能从硬件上就有所差别,这个在框图中也有体现。
从图中标号 3 的位置处就分出了两条线路,⼀条是 3-4-5 ⽤于产⽣中断,另⼀条是 3-6-7-8⽤于产⽣事件。
下⾯我们就来介绍下这两条线路:(1)⾸先看下产⽣中断的这条线路(1-2-3-4-5)1.标号 1 为输⼊线,EXTI 控制器有 20 个中断/事件输⼊线,这些输⼊线可以通过寄存器设置为任意⼀个 GPIO,也可以是⼀些外设的事件,这部分内容我们会在后⾯专门讲解。
输⼊线⼀般是存在电平变化的信号。
2.边沿检测电路,EXTI 可以对触发⽅式进⾏选择,通过上升沿触发选择寄存器和下降沿触发选择寄存器对应位的设置来控制信号触发。
边沿检测电路以输⼊线作为信号输⼊端,如果检测到有边沿跳变就输出有效信号 1 给红⾊框 3 电路,否则输出⽆效信号 0。
使用HAL库开发STM32GPIO口基础使用与外部中断

使用HAL库开发STM32GPIO口基础使用与外部中断GPIO(General Purpose Input/Output)是STM32系列微控制器上常见的功能模块之一,它用于与外部设备进行数据交互。
本文主要介绍如何使用HAL库来配置和使用STM32的GPIO口,并实现外部中断功能。
在使用GPIO口之前,我们首先需要了解STM32芯片上的GPIO引脚的命名方式。
以STM32F103C8T6为例,它具有32个GPIO引脚,从PA0到PA15和PB0到PB15、其中,GPIO口的命名方式为"A"加上引脚的编号。
例如,PA0表示GPIOA的第0个引脚,PB10表示GPIOB的第10个引脚。
1.引入头文件和宏定义首先,在代码文件的顶部引入"stm32f1xx_hal.h"头文件。
然后,在需要使用GPIO功能的地方,定义一个GPIO_InitTypeDef结构体变量,并通过它来配置GPIO的参数。
2.配置GPIO模式和速度在设置GPIO口之前,需要配置GPIO的模式和速度。
通过设置GPIO_InitStruct结构体变量的对应成员变量来实现。
例如,要将PA5配置为推挽输出模式,可以使用如下语句:```GPIO_InitStruct.Pin = GPIO_PIN_5;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);```这里,GPIO_PIN_5表示PA5引脚,GPIO_MODE_OUTPUT_PP表示推挽输出模式,GPIO_SPEED_FREQ_HIGH表示高速模式。
3.配置GPIO引脚在配置好GPIO模式和速度后,可以通过HAL_GPIO_Init函数来配置GPIO引脚,并进行初始化。
stm32 gpio中断 引脚 电平状态

标题:STM32 GPIO中断引脚电平状态分析与应用一、概述STM32是一款广泛应用于嵌入式系统的芯片,并且具有丰富的外设功能。
在实际应用中,GPIO中断引脚的电平状态对于系统的稳定性和可靠性至关重要。
本文将以STM32 GPIO中断引脚电平状态为主题,分析其原理和应用。
二、STM32 GPIO中断1. 概述STM32芯片具有丰富的GPIO外设,可以方便地实现对外部事件的响应。
其中,GPIO中断是一种常用的外部事件触发机制,通过配置GPIO中断引脚可以实现对外部信号的实时监测和响应。
2. 原理GPIO中断引脚与外部信号相连,当外部信号发生变化时,引脚的电平状态也会相应改变。
通过配置中断触发条件和中断处理函数,可以实现对外部信号的及时响应。
3. 应用在实际应用中,GPIO中断可以用于监测外部开关、传感器等设备的状态变化,以及实现对设备的控制和调度。
通过合理配置中断引脚和中断处理函数,可以提高系统的稳定性和可靠性。
三、GPIO中断引脚的电平状态1. 低电平触发当GPIO中断引脚的电平由高变低时,触发中断。
这种触发方式适用于外部信号为低电平有效的场景,例如按键开关、传感器触发等。
2. 高电平触发当GPIO中断引脚的电平由低变高时,触发中断。
这种触发方式适用于外部信号为高电平有效的场景,例如光电传感器、红外遥控器等。
3. 双边沿触发当GPIO中断引脚的电平由低变高或由高变低时,均触发中断。
这种触发方式适用于外部信号为双边沿触发的场景,例如旋转编码器、电机霍尔传感器等。
四、GPIO中断引脚电平状态的配置与实现1. 配置在STM32芯片中,通过配置GPIO中断引脚的模式、触发条件和中断优先级等参数,可以实现对中断的灵活控制。
具体配置方法可以参考STM32的冠方文档和相关资料。
2. 实现在实际应用中,可以通过编写中断处理函数,实现对中断事件的响应和处理。
在中断处理函数中,可以根据中断引脚的电平状态进行相应的逻辑判断和操作,实现对外部信号的实时监测和控制。
stm32 gpio中断 引脚 电平状态 -回复

stm32 gpio中断引脚电平状态-回复STM32是一款广泛使用的32位单片机系列,具备强大的性能和丰富的外设功能,其中GPIO(General Purpose Input/Output)引脚是其最基本的输入输出接口之一。
在STM32中,GPIO引脚可以通过中断机制来实现对电平状态的检测和响应。
本文将一步一步介绍STM32 GPIO中断引脚的原理、配置和应用场景。
一、引脚中断基本原理在STM32的GPIO引脚中,每个引脚都有自己的控制寄存器和状态寄存器。
通过设置相关的寄存器值,可以控制引脚的输入输出模式以及电平状态的检测。
当引脚的电平状态发生变化时,会触发GPIO中断并执行相应的中断服务程序。
1.1 引脚控制寄存器引脚控制寄存器用于配置引脚的输入输出模式、上拉/下拉电阻以及引脚输出的初始电平状态。
通过设置寄存器的位值,可以控制引脚的多种状态。
1.2 引脚状态寄存器引脚状态寄存器用于读取引脚的电平状态。
当引脚的电平状态发生变化时,状态寄存器的相应位会被置位,表示引脚中断发生。
1.3 外部中断控制器外部中断控制器用于管理GPIO引脚中断的触发条件和优先级。
可以通过设置相应的寄存器值,来配置引脚的触发模式(上升沿、下降沿、边沿等)以及中断的优先级。
二、引脚中断配置步骤为了使用GPIO引脚中断,需要按照以下步骤进行配置:2.1 GPIO引脚初始化首先,需要初始化GPIO引脚的功能和模式。
可以通过设置引脚控制寄存器的位值,来配置引脚的输入输出模式和上拉/下拉电阻。
例如,可以将引脚设置为输入模式,并启用上拉电阻,以便检测外部信号引脚的电平状态。
2.2 外部中断配置接下来,需要配置外部中断控制器,以确定引脚中断的触发条件和优先级。
可以通过设置中断控制寄存器的位值,来配置引脚的触发模式。
例如,可以将引脚设置为上升沿触发模式,表示仅在引脚电平上升沿触发中断。
2.3 中断服务程序编写当引脚的电平状态发生变化并触发中断时,系统会自动跳转到相应的中断服务程序执行相应的操作。
stm32外部中断的使用(含实例)

stm32外部中断的使⽤(含实例)中断对于开发嵌⼊式系统来讲的地位绝对是⽏庸置疑的,在C51单⽚机时代,⼀共只有5个中断,其中2个外部中断,2个定时/计数器中断和⼀个串⼝中断,但是在STM32中,中断数量⼤⼤增加,⽽且中断的设置也更加复杂。
今天就将来探讨⼀下关于STM32中的中断系统。
1 基本概念ARM Coetex-M3内核共⽀持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。
STM32⽬前⽀持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使⽤中断优先级设置8bit中的⾼4位。
STM32可⽀持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备⾃⼰的中断优先级控制字节PRI_n(8位,但是STM32中只使⽤4位,⾼4位有效),每4个通道的8位中断优先级控制字构成⼀个32位的优先级寄存器。
68个通道的优先级控制字⾄少构成17个32位的优先级寄存器。
4bit的中断优先级可以分成2组,从⾼位看,前⾯定义的是抢占式优先级,后⾯是响应优先级。
按照这种分组,4bit⼀共可以分成5组第0组:所有4bit⽤于指定响应优先级;第1组:最⾼1位⽤于指定抢占式优先级,后⾯3位⽤于指定响应优先级;第2组:最⾼2位⽤于指定抢占式优先级,后⾯2位⽤于指定响应优先级;第3组:最⾼3位⽤于指定抢占式优先级,后⾯1位⽤于指定响应优先级;第4组:所有4位⽤于指定抢占式优先级。
所谓抢占式优先级和响应优先级,他们之间的关系是:具有⾼抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当⼀个中断到来后,如果正在处理另⼀个中断,这个后到来的中断就要等到前⼀个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级⾼低来决定先处理哪⼀个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪⼀个。
STM32外部中断以及中断优先级

外部中断(zhōngduàn)的初始化过程:1.初始化IO为输入(shūrù)(可以设置上拉,下拉,浮空)2.开启(kāiqǐ)IO复用(fù yònɡ)时钟3.开启(kāiqǐ)与该IO相对的线上(详解下)4.配置NVIC,使能中断5.编写中断服务函数外部中断:Stm32中总共有19个外部中断包括:线0-15:IO输入中断(每条线上最多有7个IO,如GPIOA~GPIOG,但是每一条线每次只允许同时连接到一个IO)线16:PVD线17:RTC线18:USB关于(guānyú)优先级:CM3中内核(nèi hé)支持256个中断(zhōngduàn)(16个内核(nèi hé)+240外部(wàibù))和可编程256级中断优先级的设置Stm32目前(mùqián)支持84个中断(zhōngduàn)(16个内核(nèi hé)+68个外部(wàibù),注:不是(bù shi)指68个外部中断),16级可编程优先级(优先级设置寄存器中使用了4位)注意:其中(qízhōng)外部中断5-9和中断(zhōngduàn)10-15向量存放(cúnfàng)在一起优先级:数值(shùzí)低的优先级要高于数值高的!!!!!!上电复位后,系统默认(mòrèn)使用的是组0;一个系统只能使用一组优先级组,不可使用多个,优先级的设置不能超过组的范围,否则会产生不可预计的错误1.高抢先级的中断可以打断低优先级的中断响应,构成中断嵌套2.相同抢先级的中断不可以构成嵌套,系统会优先响应子优先级高的3.当2(n)个相同抢先优先级和相同子优先级的中断(zhōngduàn)出现,STM32首先响应中断通道所对应的中断向量地址(dìzhǐ)低的那个中断4.0号抢先优先级的中断,可以(kěyǐ)打断任何中断抢先优先级为非0号的中断(zhōngduàn);1号抢先优先级的中断(zhōngduàn),可以打断任何中断抢先优先级为2、3、4号的中断;……;构成中断嵌套。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
弟4章I/O端口及中断I/O口(GPIO)一、GPIO的概述:GPI/O,通用型之输入输出(General Purpose I/O)的简称,对于stm32的学习,应该从最基本的GPIO开始学习:首先看看STM32的datasheet上对GPIO口的简单介绍:每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。
共7组寄存器。
GPIO端口的每个位可以由软件分别配置成多种模式。
每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。
GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。
我们常用的IO端口寄存器只有4个:CRL、CRH、IDR、ODR。
CRL和CRH控制着每个IO口的模式及输出速率。
二、GPIO的配置:当使用GPIO时,需要两步。
一是:配置模式,二是配置时钟。
对于模式配置共有8种,可以通过编程选择:1.浮空输入:GPIO_Mode_IN_FLOATING2.带上拉输入:GPIO_Mode_IPU3.带下拉输入:GPIO_Mode_IPD4.模拟输入:GPIO_Mode_AIN5.开漏输出:GPIO_Mode_Out_OD6.推挽输出:GPIO_Mode_Out_PP7.复用功能的推挽输出:GPIO_Mode_AF8.复用功能的开漏输出:GPIO_Mode_AF_OD模式7和模式8需根据具体的复用功能决定。
时钟配置将会在后续课程中一一介绍。
I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz 和50MHz),这有利于噪声控制。
这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。
通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。
当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
三、GPIO的功能:1.通用I/O(GPIO):最最基本的功能,可以驱动LED、可以产生PWM、可以驱动蜂鸣器等等;2.单独的位设置或位清除:方便软体作业,程序简单。
端口配置好以后只需GPIO_SetBits(GPIOx,GPIO_Pin_x)就可以实现对GPIOx的pinx位为高电平;GPIO_ResetBits(GPIOx,GPIO_Pin_x)就可以实现对GPIOx的pinx位为低电平。
3.外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;4.复用功能(AF):复用功能的端口兼有IO功能等。
复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式:(CNFx[1:0]=01b,MODEx[1:0]=00b)。
5.软件重新映射I/O复用功能:为了使不同器件封装的外设I/O 功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。
这可以通过软件配置相应的寄存器来完成。
这时,复用功能就不再映射到它们的原始引脚上了;6.GPIO锁定机制:主要针对复位设定的,当某端口位lock后,复位后将不改变的此端口的位配置。
四、GPIO的配置void GPIO_Config(void){//对PB3进行初始化配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置翻转速度GPIO_Init(GPIOB,&GPIO_InitStructure);//对PB3初始化/*对PB6上拉输出*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//设置上拉GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化PB6}中断系统一、中断的定义中断的定义:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。
即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。
二、STM32中断的概述(NVIC)ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256级中断优先级的设置STM32采用Cortex-m3内核,但是STM32并没有使用Cortex-m3的全部资源。
STM32目前支持的中断共为84个(16个内核+68个外部),(注:68个外部中断可以)和16级可编程中断优先级的设置(仅使中断向量表)参看stm32中断向量表用中断优先级设置8bit中的高4位,见后面解释)。
STM32的外部中断通道已经固定分配给相应的外设。
NVIC,中文名嵌套中断向量控制器,是Cortex-M3系列控制器内部独有集成单元,与CPU结合紧密,降低中断延迟时间并且能更加高效处理后续中断。
三、中断优先级STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,也可把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。
具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。
既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个bits用于设置中断源的优先级,这8个bits 可以有8种分配方式,如下:所有8位用于指定响应优先级最高1位用于指定抢占式优先级,最低7位用于指定响应优先级最高2位用于指定抢占式优先级,最低6位用于指定响应优先级最高3位用于指定抢占式优先级,最低5位用于指定响应优先级最高4位用于指定抢占式优先级,最低4位用于指定响应优先级最高5位用于指定抢占式优先级,最低3位用于指定响应优先级最高6位用于指定抢占式优先级,最低2位用于指定响应优先级最高7位用于指定抢占式优先级,最低1位用于指定响应优先级这就是优先级分组的概念。
Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:第0组:所有4位用于指定响应优先级第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级第4组:所有4位用于指定抢占式优先级NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种: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;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//选择优先级分组的第一组NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//选择EXTI0中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//抢占优先级为0NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//响应优先级wie1NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能中断时钟NVIC_Init(&NVIC_InitStructure);//初始化中断}四、EXTI:外部中断/事件控制器外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。
每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。
每个输入线都可以被独立的屏蔽。
挂起寄存器保持着状态线的中断要求。
EXTI控制器的主要特性如下:控制器的主要特性如下:每个中断/事件都有独立的触发和屏蔽每个中断线都有专用的状态位支持多达19个中断/事件请求检测脉冲宽度低于APB2时种宽度的外部信号。
参见数据手册中电气特性部分的相关参数。
EXTI框图功能说明如要产生中断,中断线必须事先配置好并被激活。
这是根据需要的边沿检测通过设置2个触发寄存器,和在中断屏蔽寄存器的相应位写“1”到来允许中断请求。
当需要的边沿在外部中断线上发生时,将产生一个中断请求,对应的挂起位也随之被置1。
通过写“1”到挂起寄存器,可以清除该中断请求。
为产生事件触发,事件连接线必须事先配置好并被激活。
这是根据需要的边沿检测通过设置2个触发寄存器,和在事件屏蔽寄存器的相应位写“1”到来允许事件请求。
当需要的边沿在事件连线上发生时,将产生一个事件请求脉冲,对应的挂起位不被置1。
通过在软件中断/事件寄存器写“1”,一个中断/事件请求也可以通过软件来产生。
外部中断/事件线路映像80通用I/O端口以下图的方式连接到19个外部中断/事件线上:外部中断通用I/O映像另外三种其他的外部中断/事件控制器的连接如下:EXTI线16连接到PVD输出EXTI线17连接到RTC闹钟事件EXTI线18连接到USB唤醒事件由上图可以知道,PA1--PE1通过EXTI1向内部传输,直到PA15--PE15通过EXTI15向内部传输。