打印

关于SYSTICK中断优先级的问题

[复制链接]
2880|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxz_chy|  楼主 | 2012-12-15 20:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/* Configure the NVIC Preemption Priority Bits配置优先级组 */  
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
/* 2 bits for pre-emption priority:0-3
   2 bits for subpriority:0-3*/
     
   /* Enable the USART3 Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;  
  NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  /* enabling TIM1 interrupt */        //抢占级0,响应级0 采样点间隔计时器0.5ms
  NVIC_InitStructure.NVIC_IRQChannel=TIM1_CC_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

     /* Enable the TIM3 gloabal Interrupt */ //采样周期计时器20ms
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;  
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  NVIC_SetPriority(SysTick_IRQn,15);
}
如上程序,我设的抢占优先级为2位(0-3),亚优先级也是2位(0-3),然后设的Systick的优先级为15(默认的优先级),这样话Systick中断到底比其他的优先级都低呢还是都高呀
沙发
zxz_chy|  楼主 | 2012-12-15 21:46 | 只看该作者
其实我想问的就是默认优先级与配置的优先级之间的关系,还有默认优先级是抢占式的吗?

使用特权

评论回复
板凳
john_lee| | 2012-12-16 01:05 | 只看该作者
除了Reset, NMI, Hardfault 外的所有的异常和中断默认优先级都是 0,就是全部都是最高级,如果程序不配置优先级,那么中断是无法抢占的(同级不能抢占)。

使用特权

评论回复
地板
zxz_chy|  楼主 | 2012-12-16 19:45 | 只看该作者
谢谢楼上的回答,你的意思是默认的优先级是不能抢占的?

使用特权

评论回复
5
airwill| | 2012-12-16 21:46 | 只看该作者
默认的优先级, Reset, NMI, Hardfault 能抢占, 其他的不能抢占

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

148

帖子

2

粉丝