历史上的今天
返回首页

历史上的今天

今天是:2025年01月15日(星期三)

正在发生

2019年01月15日 | 关于STM32 NVIC配置的解释

2019-01-15 来源:eefocus

大部分学习用的开发板在配置各个外设的中断优先级时,习惯在每个外设的初始化文件里都进行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的文件进行中断优先级组及时钟等的配置,即中断优先级组配置只出现一次


推荐阅读

史海拾趣

Component Research Co公司的发展小趣事

Component Research Co最初只是一家小型电子元件研发公司,面临着激烈的市场竞争。然而,公司研发团队在一次实验中意外发现了一种新型半导体材料,这种材料具有出色的导电性能和稳定性。公司迅速将这一发现转化为实际产品,并推向市场。新产品因其卓越性能迅速受到客户青睐,Component Research Co因此名声大噪,逐渐在电子元件市场占据一席之地。

EECO Switch公司的发展小趣事

1993年,Transico公司收购了EECO Switch部门,这标志着EECO Switch公司进入了一个全新的发展阶段。在被收购后,EECO Switch获得了更多的资源和支持,进一步加速了其业务拓展的步伐。公司不仅在原有的人机界面产品领域继续深耕细作,还积极拓展新的业务领域,如智能家居、物联网等。

Analogic Corporation公司的发展小趣事

作为薄膜开关的先驱和专家,EECO Switch公司在该领域拥有超过30年的丰富经验。公司凭借其精湛的制造工艺和严格的品质控制,成功打造出了众多优质的薄膜开关产品。这些产品广泛应用于医疗设备、航空电子设备、军用产品和工业控制等领域,赢得了众多客户的信任和好评。

AD Semiconductor公司的发展小趣事

为了满足全球客户的需求,EECO Switch公司积极实施全球化战略。公司在墨西哥、台湾和中国等地设立了制造工厂,并在英国剑桥设立了销售办事处。这些海外机构不仅为公司提供了更广阔的市场空间,还帮助公司更好地了解当地市场的需求和趋势。展望未来,EECO Switch将继续秉承创新、质量、服务的核心价值观,致力于成为全球领先的人机界面产品提供商。

Aten International公司的发展小趣事

随着多媒体技术的快速发展,专业影音产品的市场需求逐渐增长。Aten International紧跟市场趋势,投入大量研发资源,推出了一系列专业影音产品,包括高清视频切换器、音频分配器等。这些产品以其高品质、高稳定性受到了市场的广泛认可,为Aten International在电子行业树立了良好的口碑。

ESTEK公司的发展小趣事

在电子行业竞争日益激烈的背景下,ESTEK公司也面临着诸多挑战和危机。然而,公司始终保持着清醒的头脑和坚定的信心。在面对市场波动、原材料价格上涨等挑战时,ESTEK公司迅速调整战略、优化生产流程、降低成本等措施,成功度过了危机。在危机中,ESTEK公司展现出了强大的韧性和生命力,为公司未来的发展奠定了坚实基础。

问答坊 | AI 解惑

做F题的加群69079341

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 大家加啊!  …

查看全部问答>

arm-xscale, arm-iwmmxt这两个有什么区别??

我要为pxa270编译一个工具链,在网上看有人用arm-xscale ,有人用arm-iwmmxt,iwmmxt是什么?…

查看全部问答>

工程编译目标文件project.out使用属性察看size的大小和实际文件大小问什么不一样?

    在Tornado环境下,编译downloadable类型的工程,生成project.out文件,右键察看priority-size大小为:0.68MB左右,而到工程目录下找到project.out文件,其文件大小却为:8MB左右,将project.out下载到目标机,目标机资源占用情况也差 ...…

查看全部问答>

高薪招聘招聘逆向调试人员!

高薪招聘招聘逆向调试人员! 工作地点:吉林省长春市 工作性质: 全职(可兼职) 薪    水: 不求学历,只看实力,薪水看你的能力另谈!(一旦录用,如工作尽职,三个月后可加薪) 岗位职责: 网络游戏安全问题,分析.(外挂、木马等 ...…

查看全部问答>

win ce Platform Builder安装问题

win ce Platform Builder5.0与 VS2005 安装在同一台机器有没有冲突,如果有,怎么解决? 谢谢!…

查看全部问答>

一本书讲C、C++状态机编程,算得上是经典

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata   这本书讲C、C++状态机编程,算得上是经典    …

查看全部问答>

帖子审核能不能快一点,我等着收钱呢

帖子审核能不能快一点,我等着收钱呢开点玩笑,共同学习…

查看全部问答>

空间定位指令?

能不能请教一个问题啊,就是IAR汇编语言有条指令ORG 1100H,应该是指定程序的起始空间吧,程序将程序烧录在0x1100开始的空间地址,那想问一下,C语言怎么写这条指令呢?            & ...…

查看全部问答>

坛子里有网友玩 STM32F4DISCOVERY么?

坛子里有网友玩 STM32F4DISCOVERY么?…

查看全部问答>