OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2621|回复: 1

STM32 NVIC 中断 问题

[复制链接]

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-5-9
在线时间
35 小时
发表于 2016-9-8 11:26:41 | 显示全部楼层 |阅读模式
1金钱
  请问各位大人,同时使用STM32单片机串口中断与定时器中断,应该要怎么设置NVIC  而不会相互影响呢?   
中断分组2 级   
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    //中断优先级 NVIC 设置
  NVIC_InitStructure.NVIC_IRQChannel = USARTx_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);



    //中断优先级 NVIC 设置
      NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);

最佳答案

查看完整内容[请看2#楼]

中断优先级分组为2,说明抢占优先级、响应优先级各占2位,即各有4级(0-3级)。 NVIC_IRQChannelPreemptionPriority 为抢占优先级,0级优先1级; NVIC_IRQChannelSubPriority 为响应优先级,0级优先1级; 低抢占式优先级的中断处理过程中,如高抢占优先级中断发生,则先执行高抢占,执行完毕后再继续执行低抢占,即高抢占可以打断正在执行的低抢占; 两个中断抢占相同,高响应不能打断低响应。当一个中断到来时,如果正在 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2016-6-17
在线时间
60 小时
发表于 2016-9-8 11:26:42 | 显示全部楼层
中断优先级分组为2,说明抢占优先级、响应优先级各占2位,即各有4级(0-3级)。
NVIC_IRQChannelPreemptionPriority 为抢占优先级,0级优先1级;
NVIC_IRQChannelSubPriority  为响应优先级,0级优先1级;

低抢占式优先级的中断处理过程中,如高抢占优先级中断发生,则先执行高抢占,执行完毕后再继续执行低抢占,即高抢占可以打断正在执行的低抢占;

两个中断抢占相同,高响应不能打断低响应。当一个中断到来时,如果正在处理另一个中断,后来的中断要等处理完前一个中断后,才能执行后来的中断。而当两个中断同时来时,首先执行高响应的中断;

如果抢占、响应都相同,则要看中断向量表了,那个硬件数低,就先执行那个。


你这里的设置两个中断不能互相打断,哪个先来就执行哪个;当两个中断同时来时,先执行USART的中断。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 19:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表