datasheet

STM32F429之 嵌套向量中断控制器NVIC

2019-05-25来源: eefocus关键字:STM32F429  嵌套向量  中断控制器  NVIC

外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,对于其它

产品,则有19个能产生事件/中断请求的边沿检测器。每个输入线可以独立地配置输入类型(脉冲

或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏

蔽。挂起寄存器保持着状态线的中断请求。

主要特性

EXTI控制器的主要特性如下:

● 每个中断/事件都有独立的触发和屏蔽

● 每个中断线都有专用的状态位

● 支持多达20个软件的中断/事件请求

● 检测脉冲宽度低于APB2时钟宽度的外部信号。参见数据手册中电气特性部分的相关参数。

 


STM32中有两个优先级的概念:抢占式优先级和响应优先级(也叫副优先级)。

他们的特性是:

1:高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中:即低抢占式优先级的中断可以被高抢占式优先级的中断打断;

2:当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。

3:如果两个具有相同抢占式优先级的中断同时到达,那么系统给先处理高响应优先级的中断;

4:如果两个中断的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。


它们的级别关系是: 抢占式优先级 > 响应优先级 > 中断表中的排位顺序。只有在上一级优先级相同时下一级优先级才会起作用。


先选择中断控制器组,然后要使用的中断源,设置抢断优先级与响应优先级

static void NVIC_Configuration(void)

{

  NVIC_InitTypeDef NVIC_InitStructure;

  /* 嵌套向量中断控制器组选择 (有五组,有什么区别吗)*/

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  /* 配置USART为中断源() */

  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

  /* 抢断优先级为1 (有几级?)*/

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

  /* 子优先级为1 */

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;

  /* 使能中断 */

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  /* 初始化配置NVIC */

  NVIC_Init(&NVIC_InitStructure);

}

在stm32系统中使用 抢占式优先级(NVIC_IRQChannelPreemptionPriority)和响应优先级(NVIC_IRQChannelSubPriority) 共同构成了一个 中断优先级,每个中断优先级共有4bit数据来表示其使用的抢占优先级和响应优先级,而中断优先级又被分成了四组,每一组使用一种抢占优先级数据位和响应优先级数据位的组合方式。


第0组 NVIC_PriorityGroup_0 使用0bits表示抢占式优先级------NVIC_IRQChannelPreemptionPriority无效,4bits表示响应优先级--NVIC_IRQChannelSubPriority值可为0~15。因此,在这一组中的中断没有抢占式优先级,只有响应优先级,它们互相不可打断。


第1组  NVIC_PriorityGroup_1 使用1bits表示抢占优先级------NVIC_IRQChannelPreemptionPriority值可为0~1,使用3bits表示响应优先级NVIC_IRQChannelSubPriority值可为0~8。



第2组  NVIC_PriorityGroup_2 使用2bits表示抢占优先级------NVIC_IRQChannelPreemptionPriority值可为0~3,使用2bits表示响应优先级NVIC_IRQChannelSubPriority值可为0~3。


第3组  NVIC_PriorityGroup_3 使用3bits表示抢占优先级------NVIC_IRQChannelPreemptionPriority值可为0~7,使用1bits表示响应优先级NVIC_IRQChannelSubPriority值可为0~1。


第4组  NVIC_PriorityGroup_4 使用4bits表示抢占优先级------NVIC_IRQChannelPreemptionPriority值可为0~15,使用0bits表示响应优先级NVIC_IRQChannelSubPriority值可为0无效。

无论使用哪一组,其优先级总数(抢占优先级*响应优先级)都是16.


  /* 抢断优先级为1 (有几级?)*/

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

  /* 子优先级,(响应优先级) */

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;


typedef struct

{

  u8 NVIC_IRQChannel;

  u8 NVIC_IRQChannelPreemptionPriority;

  u8 NVIC_IRQChannelSubPriority;

  FunctionalState NVIC_IRQChannelCmd;

} NVIC_InitTypeDef;


/**

@code  

 The table below gives the allowed values of the pre-emption priority and subpriority according

 to the Priority Grouping configuration performed by NVIC_PriorityGroupConfig function

  ============================================================================================================================

    NVIC_PriorityGroup   | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority  | Description

  ============================================================================================================================

   NVIC_PriorityGroup_0  |                0                  |            0-15             |   0 bits for pre-emption priority

                         |                                   |                             |   4 bits for subpriority

  ----------------------------------------------------------------------------------------------------------------------------

   NVIC_PriorityGroup_1  |                0-1                |            0-7              |   1 bits for pre-emption priority

                         |                                   |                             |   3 bits for subpriority

  ----------------------------------------------------------------------------------------------------------------------------    

   NVIC_PriorityGroup_2  |                0-3                |            0-3              |   2 bits for pre-emption priority

                         |                                   |                             |   2 bits for subpriority

  ----------------------------------------------------------------------------------------------------------------------------    

   NVIC_PriorityGroup_3  |                0-7                |            0-1              |   3 bits for pre-emption priority

                         |                                   |                             |   1 bits for subpriority

  ----------------------------------------------------------------------------------------------------------------------------    

   NVIC_PriorityGroup_4  |                0-15               |            0                |   4 bits for pre-emption priority

                         |                                   |                             |   0 bits for subpriority                       

  ============================================================================================================================

@endcode

*/

/** @defgroup MISC_Preemption_Priority_Group 

  * @{

  /* 嵌套向量中断控制器组选择 */

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

*/

 

#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /*!< 0 bits for pre-emption priority

                                                            4 bits for subpriority */

#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /*!< 1 bits for pre-emption priority

                                                            3 bits for subpriority */

#define NVIC_Prior

[1] [2] [3] [4]

关键字:STM32F429  嵌套向量  中断控制器  NVIC

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/ic462878.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32F429之SysTick系统定时器
下一篇:STM32F429之UART使用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F4定时器时钟频率和时钟源

从时钟树中我们可以得知(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线从STM32F4的内部时钟树可知,(1)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟;(2)而如果APB1和APB2分频数不为1,那么TIM1、TIM8~TIM11的时钟为APB2的时钟的两倍,TIM2~TIM7、TIM12
发表于 2019-06-18
STM32F4定时器时钟频率和时钟源

STM32CubeMX开发stm32f103rbt6 CAN例程(二)

1、STM32CubeMX配置    2、生成代码查看  3、编写代码程序下载:http://download.csdn.net/download/white_loong/101374684、使用CAN分析仪测试(波特率125K)问题:程序CAN收发同时打开例如:1、main() {     HAL_CAN_Receive_IT();     HAL_CAN_Transmit_IT(); }  HAL_CAN_RxCpltCallback() { 
发表于 2019-06-18
STM32CubeMX开发stm32f103rbt6 CAN例程(二)

stm32f407之CAN控制器(操作寄存器)

),和can2(从),其中过滤器的设置是通过can1来设置,其他工作模式,波特率等,可以各自设置。每个控制器有三个发送邮箱,两个fifo,每个fifo有三个接收邮箱。发送:选择一个空的发送邮箱,把帧信息写到该发送邮箱的寄存器里,请求发送,控制器就会根据标识符的优先级把帧先后发送出去。接收:如果接收到的帧的标识符能过过滤表的一系列过滤,该帧信息就会保存在fifo接收邮箱的寄存器里。过滤器:stm32f407共有28组过滤器,每组过滤器可以设置关联到fifo0或者fifo1,每组都包括两个32位存储器,可以配置成一个32位有位屏蔽功能的标识符过滤器,或者两个32位完全匹配的标识符过滤器,或者两个16位有位屏蔽功能的标识符过滤器,或者四个16位完全
发表于 2019-06-18
stm32f407之CAN控制器(操作寄存器)

stm32F4 hal库之CAN通信的实现

目标:通过can总线,用stm32的CAN模块实现对电机驱动发送指令,从而实现对电机的控制。硬件设计:①收发芯片的功能:把单片机送来的信号通过收发芯片的转换从而实现信号的具体传输。②120欧终端电阻:主要是为了防止信号的干扰,一般来说,终端设备的CAN_H和CAN_L也要加上120欧终端电阻。软件设计基本知识:其实各种通信方式的本质都是一样的,均分为两个部分;①波特率:以何种速度来通信②具体准则:发送端和接收端对发送来的数据的解释。特色:CAN工作于4种模式;类似于手机的飞行模式,正常模式,待机状态,是一种感觉。CAN常用的工作模式是(1)回环模式:也就是自己发,自己收。(2)正常工作模式,也就是用于正常的接收,发送。一.公共部分
发表于 2019-06-18
stm32F4 hal库之CAN通信的实现

STM32f407的数字采集电路ADC的设计与使用

IN5   AD_CH2_Y    PA6   ADC1 IN6   AD_CH2_X    PA7   ADC1 IN7   */ #ifndef __BSP_ADC_H#define __BSP_ADC_H #include "stm32f4xx.h" #include "stm32f4xx.h" void bsp_InitADC(void);u16 bsp_GetAdValue(u8 chx); 
发表于 2019-06-18

STM32F207运用串口空闲中断+DMA接收不定长数据

;       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);//开启DMA时钟          DMA_InitStructure.DMA_Channel = DMA_Channel_4;//通道4           DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)USART1_DR_Address; //外设地址
发表于 2019-06-18

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved