大部分学习用的开发板在配置各个外设的中断优先级时,习惯在每个外设的初始化文件里都进行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外部中断(EXTI)分析和应用
下一篇:NVIC中断优先级管理
推荐阅读最新更新时间:2024-11-11 11:42
推荐帖子
- 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 综合技术交流
设计资源 培训 开发板 精华推荐
- ESP32/8266多模组自动烧录调试架3.0
- C8051F326DK,用于 C8051F326 8051 MCU 的 MCU 开发套件
- AD8659ARZ-R7同相运算放大器配置的典型应用电路
- 使用 Semtech 的 SC1155 的参考设计
- LTC3728LXCUH 双通道、550kHz、2 相同步稳压器的典型应用电路
- 使用 Analog Devices 的 LTM4636-1IY 的参考设计
- 汽车电机控制应用的控制板
- ST25-TAG-BAG-U包含五个不同的项目(每种类型五个),它们全部基于NFC forum type 5 标签芯片(ST25TV512和ST25TV02K)或 NFC forum type 4标签芯片(ST25TA02KB和ST25TA64K)
- 【立创开发板】海鸥专属梁山派游戏机
- NE555调光调速