关于STM32 NVIC配置的解释

发布者:快乐的成长最新更新时间:2022-01-13 来源: eefocus关键字:STM32  NVIC配置  中断优先级 手机看文章 扫描二维码
随时随地手机看文章

大部分学习用的开发板在配置各个外设的中断优先级时,习惯在每个外设的初始化文件里都进行NVIC group配置,例如在ADC和Usart都有NVIC的配置如下:


ADC中:

void ADC_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel =ADC1_2_IRQn;     //开启ADC_Channel8中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);   
}

Usart中:

void NVIC_Configuration(void)
{
  /*  结构声明*/
  NVIC_InitTypeDef NVIC_InitStructure;
  /* Configure the NVIC Preemption Priority Bits */  
  /* Configure one bit for preemption priority */
  /* 优先级组 说明了抢占优先级所用的位数,和响应优先级所用的位数   在这里是0, 4 
  0组:  抢占优先级占0位, 响应优先级占4位
  1组:  抢占优先级占1位, 响应优先级占3位
  2组:  抢占优先级占2位, 响应优先级占2位
  3组:  抢占优先级占3位, 响应优先级占1位
  4组:  抢占优先级占4位, 响应优先级占0位  
  */       
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);    


  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;     //设置串口1中断
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     //抢占优先级 0
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级为0
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
  NVIC_Init(&NVIC_InitStructure);
}


但实际上这种配置是不合理的,即如果假设两个NVIC配置的中断组不同,如果其中一个外设引用了最后配置中断组允许的优先级之外的值,可能会出现冲突。和老师讨论过后,他认为如果之前初始化的优先级较后面优先级组设置的值不合理,前面的中断可能就不能响应,BUT。。。。。


我实验时发现,无论如何更改这两个优先级配置顺序,貌似对我的程序结果没有影响。


当然老师的建议是在工程中建立systemconfig的文件进行中断优先级组及时钟等的配置,即中断优先级组配置只出现一次,

关键字:STM32  NVIC配置  中断优先级 引用地址:关于STM32 NVIC配置的解释

上一篇:STM32外部中断(EXTI)分析和应用
下一篇:NVIC中断优先级管理

推荐阅读最新更新时间:2024-11-11 11:42

STM32的USART发送数据时如何使用TXE和TC标志
在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器(下图中阴影部分的TDR),另一个是程序看不到的移位寄存器(下图中阴影部分Transmit Shift Register)。 对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束;对照下图,当TDR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输数据,但因为TDR已经变空,程序可以把下一个要发送的字节(操作USART_DR)写入TDR中,而不必等到移位寄存器中所有位发送结束,所有位发送结束时(送出停止位后)硬件会设置TC标志。 另一方面,在刚刚初始化好USART还没有发送任何数据时,也会
[单片机]
<font color='red'>STM32</font>的USART发送数据时如何使用TXE和TC标志
STM32库函数端口初始化说明
下面只针对这两种MCU库函数操作端口进行说明 一、端口功能说明 STM32F0系列 typedef struct { uint32_t GPIO_Pin; //引脚配置 GPIOMode_TypeDef GPIO_Mode; //端口模式 GPIOSpeed_TypeDef GPIO_Speed; //引脚速率 GPIOOType_TypeDef GPIO_OType; //输出设置 GPIOPuPd_TypeDef GPIO_PuPd; //管脚设置 }GPIO_InitTypeDef; typedef enum { GPIO_Mode_IN = 0x00, //输入 GPIO_Mode_OU
[单片机]
STM32 USART 使用DMA 详解
前言(绕开吧): 这段时间由于我们的项目Manibus板卡需要融入 WIFI, BLT, 网口,CAN,串口的多位一体通讯,互不干扰,而且可以相互调用彼此进行数据通讯,这里为了节省MCU资源,所以就使用DMA的方式来进行串口 和 ESP8266的通讯,接下来就介绍一下具体的操作内容! DMA具体的不介绍,总的来说,他就是一个中转站,数据给DMA,他帮你传递或接受,你只要读就行了!! 接下来看代码! void localUsartDMAConfig(void){ DMA_InitTypeDef DMA_InitStructure; RCC_AHBPeriphClockCmd(RC
[单片机]
<font color='red'>STM32</font> USART 使用DMA 详解
025_STM32之MDK5软件仿真之查看io口输出
(一)模拟仿真或者STLINK仿真那些就需要相应的配置对应的地方 DARMSTM.DLL-pSTM32F103ZE (二) 如果是模拟仿真的话注意要配置好时钟 (三) 配置监测的引脚 输入配置的引脚之后点击空白处就行了 PORTA.0 如果弹出unknown signal的话,看第一点是否配置好,或者所配置的型号是否支持仿真,如:F429是不支持的 (四) 点击右键,选择输出的类型,像我们PWM的话就选bit的类型的 (五)运行看运行状态,点击stop或者start
[单片机]
025_STM32之MDK5软件仿真之查看io口输出
求一种STM32单片机玩转TFTLCD彩屏设计方案
一、功能简介 本项目使用Proteus8.12仿真STM32单片机控制器,使用ST7735R彩屏模块等。 主要功能如下: (1)汉字字符显示; (2)2D图形显示; (3)图片显示; 二、软件设计 //显示界面1--汉字字符显示 void _show_demo1(void) { FRONT_COLOR=WHITE; LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,12, Hai XiaoYi ); FRONT_COLOR=RED; LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16, Hai
[单片机]
求一种<font color='red'>STM32</font>单片机玩转TFTLCD彩屏设计方案
STM32下模拟I2C的C语言实现
近来主要在写一些STM32上的开发程序,由于STM32的固件库中,I2C模块实在是不好用,所以在采用了软件模拟的方法来实现。 具体的代码如下(在Keil下调试通过): #include stm32f10x_lib.h //条件编译 1:使用软件模拟I2C //#define PIN_SCL GPIO_Pin_6 //#define PIN_SDA GPIO_Pin_7 static __inline void TWI_SCL_0(void) { GPIOB- BRR=PIN_SCL; } static __inline void TWI_SCL_1(void) { GPIOB- BSRR=P
[单片机]
STM32 FLASH擦除、写入以及防止误擦除程序代码
编译环境:(Keil)MDK4.72.10 stm32库版本:STM32F10x_StdPeriph_Driver_3.5.0 一、本文不对FLASH的基础知识做详细的介绍,不懂得地方请查阅有关资料。   对STM32 内部FLASH进行编程操作,需要遵循以下流程:   1、FLASH解锁;   2、清除相关标志位;   3、擦除FLASH(先擦除后写入的原因是为了工业上制作方便,即物理实现方便);   4、写入FLASH;   5、锁定FLASH; 实例: #define FLASH_PAGE_SIZE ((uint16_t)0x400) //如果一页为1K大小 #define WRITE_START_ADDR ((uin
[单片机]
<font color='red'>STM32</font> FLASH擦除、写入以及防止误擦除程序代码
GD32单片机和STM32单片机的区别
一、前言 什么GD32? GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。 所以GD32和STM32有很多地方都是一样的,不过GD32毕竟是不同的产品,不可能所有东西都沿用STM32,有些自主开发的东西还是有区别的。相同的地方我们就不说了,下面我给大家讲一下不同的地方。 二、区别 1、内核 GD32采用二代的M3内核,STM32主要采用一代M3内核,下图是ARM公司的M3内核勘误表,GD使用的内核只有752419这一个BUG。 2、主频 使用HSE(高速外部时钟):GD32的主频最大108M,STM32的主频最大72M 使用HSI(高速内部时钟):GD32的主频最大10
[单片机]
GD32单片机和<font color='red'>STM32</font>单片机的区别

推荐帖子

ESP32-C6都出开发板了C5哪去了?
之前一直关注着ESP32-C5的2.4GHz和5GHz双频WiFi,而现在ESP32-C6已经有开发板了,ESP32-C5还没量产?大家有小道消息吗?ESP32-C6都出开发板了C5哪去了?ESP32-C5是乐鑫继ESP32-C6之后,在Wi-Fi6研发上的新突破,进一步扩展了公司AIoT产品矩阵的5GHzWi-Fi6产品线。乐鑫今天​​宣布发布ESP32-C5,这是一款高度集成的MCU,具有2.4和5GHz双频
wangerxian RF/无线
网络技术基础知识(十八)~~网络互连的方式
网络互连的主要方式分为三种:1、LAN-LAN;2、LAN-WAN;3、WAN-WAN。  一、LAN-LAN  互连层次:LAN-LAN网络互连发生在OSI/RM的数据链路层。  互连设备:LAN-LAN网络的互连设备是网桥、中继器或路由器。  二、LAN-WAN  互连层次:LAN-WAN的互连发生在网络层。  互连设备:LAN-WAN的互连设备是路由器。  三、WAN-WAN  互连层次:WAN-WAN互连发生在OSI/RM的传输层及其上层。  互连
mdreamj RF/无线
【LPC54100】+ NXP Sensor Framework(运动处理处理解决方案库下载)
今天看官方的文档时,看到运动处理处理解决方案库,幸好我这次也要使用加速度这些传感器,马上上去上去官网找了,找到把他分享给坛友们,免得大家去找了【LPC54100】+NXPSensorFramework(运动处理处理解决方案库下载)感谢分享IC爬虫发表于2015-3-822:56感谢分享感谢支持看标题是不错的资料,。。感谢赞一个sandsinwater发表于2015-3-908:52赞一个 感谢支持,现在在研究双核
强仔00001 NXP MCU
如何判断自己写的代码是可综合的?
用一句简单的话概括:电脑永远没有你聪明。具体来说,通常EDA软件对HDL代码的综合能力总是比人差。对于一段代码,如果你不能想象出一个较直观的硬件实现方法,那EDA软件肯定也不行。比如说,加法器、多路选择器是大家都很熟悉的电路,所以类似A+B-C,(AB)?C:D这样的运算一定可以综合。而除法、开根、对数等等较复杂的运算,必须通过一定的算法实现,没有直观简单的实现方法,则可以判断那些计算式是不能综合的,必须按它们的算法写出更具体的代码才能实现。此外,硬件无法支持的行为描述,当然也不能被综合
eeleader FPGA/CPLD
IGBT驱动波形的死区时间问题
给IGBT上面的67点和45点+15,-7V的波形,看死区多少的IGBT驱动波形的死区时间问题IGBT驱动波形的死区时间问题这个看不出来死区设置是多少死区时间一般指的是两相或三相PWM对IGBT控制时使用。因为两两之间如果没有死区时间,很容易让上下管子同时导通。
海浪电子 开关电源学习小组
有一款USB CDC驱动安装软件叫什么名?
记得以前在哪个文档里看到过自定义的USB-CDC硬件在windows下可以通过一款应用程序扫描和安装,这个软件叫啥名一时想不起来了?谁还记得不?记得软件界面很小,打开后会有一个下拉列表显示没有安装驱动的硬件,点安装就自动装好了。有一款USBCDC驱动安装软件叫什么名?想起来了,zadig。谢谢你,完美解决
littleshrimp 综合技术交流
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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