你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

M4的中断优先级配置

[复制链接]
scfor123456 提问时间:2019-9-17 15:02 /
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;


/* 配置NVIC为优先级组1 */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//高2位为抢占优先级,低2位为响应优先级


//中断1设置优先级
/* 配置中断源:按键1 */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;  //配置为EXTI0通道
/* 配置抢占优先级 */
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
/* 配置子优先级 */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
/* 使能中断通道 */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure); //将上述配置参数传入中断初始化函数


//中断2设置优先级

  /* 配置中断源:DMA1 */
  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;  //配置为DMA1_Channel1_IRQn通道
  /* 配置抢占优先级 */
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  /* 配置子优先级 */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  /* 使能中断通道 */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure); //将上述配置参数传入中断初始化函数
}


这个设置中,EXTI0中断抢占优先级高于DMA1中断,所以EXTI0会打断DMA1中断,这样的写法对不对?

收藏 评论4 发布时间:2019-9-17 15:02

举报

4个回答
废鱼 回答时间:2019-9-17 16:26:52
是这样写的。NVIC_IRQChannelPreemptionPriority决定是否抢占。
scfor123456 回答时间:2019-9-17 16:36:36
安 发表于 2019-9-17 16:26
是这样写的。NVIC_IRQChannelPreemptionPriority决定是否抢占。

OK
scfor123456 回答时间:2019-9-17 17:06:02
安 发表于 2019-9-17 16:26
是这样写的。NVIC_IRQChannelPreemptionPriority决定是否抢占。

SysTick_Config(0x01000000);
NVIC_Configuration();
先设置SysTick再设置NVIC会导致SysTick定时中断进不去?
废鱼 回答时间:2019-9-19 09:15:59
先配置NVIC再配置systick,可能是因为  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)这句话导致的。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版