[STM32F1] stm32程序中两个中断优先级的问题

[复制链接]
 楼主| 电子过客 发表于 2014-12-27 22:35 | 显示全部楼层 |阅读模式
stm32程序中两个中断一个是串口中断另一个是红外触发中断
  串口中断函数
       void NVIC_Configuration1(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        /* Configure the NVIC Preemption Priority Bits */  
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        
        /* Enable the USARTy Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;         
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}

红外接收中断
static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  
  /* ÅäÖÃP[A|B|C|D|E]11ΪÖжÏÔ´ */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
红外线的触发中断优先级大于 串口的啊?怎么红外的触发不好使呢
PS:当串口配置
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART3, USART_IT_TXE, ENABLE);
这俩句取消之后,红外线的中断就可以这是什么原因呢, 有需要怎么设置呢,
请教下各位


 楼主| 电子过客 发表于 2014-12-28 09:14 | 显示全部楼层
请求大师指点下
 楼主| 电子过客 发表于 2014-12-28 12:42 | 显示全部楼层
之前的查出来了,红外与串口硬件部分冲突了
但是这回改成串口1,与这俩句无关。
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART3, USART_IT_TXE, ENABLE);
但是我吧中断的串口中断优先级改为
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;         
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
而红外的的中断改为
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;
也不响应,哪里出错了呢
mmuuss586 发表于 2014-12-28 18:39 | 显示全部楼层

串口中断都关了也不响应吗?
kfliuyan 发表于 2014-12-28 19:09 | 显示全部楼层
 楼主| 电子过客 发表于 2014-12-28 20:40 | 显示全部楼层
mmuuss586 发表于 2014-12-28 18:39
串口中断都关了也不响应吗?

我把TM2, 串口2(后改的),红外中断
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);                                               //1组抢占优先级
TIM 2           抢占优先为0 ,相应优先为1
红外中断     抢占优先为0 ,相应优先为0
串口2         抢占优先为1,相应优先为2
但是红外 中断没反应
可是还把串口2的
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART2, USART_IT_TXE, ENABLE);
这两句屏蔽就能相应红外中断,我想不明白,  不像是优先级设置的问题,
我试过不管串口2的优先级比红外的高于低都不反应
小浣熊 发表于 2014-12-29 18:03 | 显示全部楼层
表示没看懂楼主的问题出在哪里
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

210

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部